c++ 有没有标准的变元函数可以擦除向量中的多个元素?

zlhcx6iw  于 2022-12-05  发布在  其他
关注(0)|答案(2)|浏览(118)

取这个向量:

std::vector<int> v = {1, 2, 3, 4, 5};

假设我想删除一个向量中任意索引处的元素:0、1和3。必须编写这样的内容是很乏味的:

v.erase(v.begin());
v.erase(v.begin());
v.erase(v.begin() + 1);

有没有一个标准函数可以从一个向量中删除任意数量的索引?v.erase(0, 1, 3);

disho6za

disho6za1#

是也不是。
这里没有关于索引的内容,也没有关于任意元素的内容。
但是,您可以一次擦除形成连续范围的多个项,因此,您可以将对erase的前两次调用合并为一次(这可能会使该过程的速度提高一倍)。

// erase the first two elements
v.erase(v.begin(), v.begin() + 2);
qyswt5oh

qyswt5oh2#

如果你想删除前三个元素,你可以运行。

std::vector<int> v = {1, 2, 3, 4, 5};
    v.erase(v.begin(),v.begin()+3);

或者,

v.erase(v.begin(),v.end()-2);

相关问题