取这个向量:
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);