ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

C++按索引同时删除vector中的多个元素

C++按索引同时删除vector中的多个元素

这个时候不能从前往后删,因为会破坏後面的元素的索引值,比如如果第删除了第2个元素,第3个元素的索引就会变为第2个元素的索引,造成混乱,甚至引起程序崩溃。应该从後往前删。

代码:

#include<iostream>
#include<vector>
#include<algorithm>int main()
{std::vector<int> test_vec{2,3,4,1,5,8};std::cout<<test_vec.size()<<std::endl;std::vector<int> eraseIndexs{5,2,4};std::sort(eraseIndexs.rbegin(),eraseIndexs.rend());for(const auto& idx : eraseIndexs){test_vec.erase(test_vec.begin()+idx);}std::cout<<test_vec.size()<<std::endl;for(const auto& item:test_vec){std::cout<<item<<" ";}std::cout<<std::endl;return 0;
}

结果:

6
3
2 3 1 

 

返回列表