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 

 参考链接:

1、C++---迭代器删除元素避免索引混乱

2、C++ STL中std::list删除指定位置元素的实现方法

posted @ 2025-12-21 20:10  rainbow70626  阅读(1)  评论(0)    收藏  举报