是否有任何标准的可变函数来擦除向量中的多个元素?



取这个向量:

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);

是和不是。

没有涉及到索引。也没有处理任意元素的东西。

但是您可以一次擦除形成连续范围的多个项。因此,您可以将对erase的前两个调用合并为一个(并且可能将进程中的速度提高一倍)。

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

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

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

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

最新更新