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
参考链接:

浙公网安备 33010602011771号