取这个向量:
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);
v.erase(0, 1, 3);
disho6za1#
是也不是。这里没有关于索引的内容,也没有关于任意元素的内容。但是,您可以一次擦除形成连续范围的多个项,因此,您可以将对erase的前两次调用合并为一次(这可能会使该过程的速度提高一倍)。
erase
// erase the first two elements v.erase(v.begin(), v.begin() + 2);
qyswt5oh2#
如果你想删除前三个元素,你可以运行。
std::vector<int> v = {1, 2, 3, 4, 5}; v.erase(v.begin(),v.begin()+3);
或者,
v.erase(v.begin(),v.end()-2);
2条答案
按热度按时间disho6za1#
是也不是。
这里没有关于索引的内容,也没有关于任意元素的内容。
但是,您可以一次擦除形成连续范围的多个项,因此,您可以将对
erase
的前两次调用合并为一次(这可能会使该过程的速度提高一倍)。qyswt5oh2#
如果你想删除前三个元素,你可以运行。
或者,