从std::vector中移除元素

Removing element from std::vector

本文关键字:元素 vector std      更新时间:2023-10-16

我想使用

从std::vector v中删除一个元素
v.erase( std::remove_if( std::begin(v), std::end(v), pred), std::end(v) );

我知道可移动元素(如果存在)它必须在index1和index2之间。是否有任何方法使用这些信息与remove_if?

如果只有一个元素要删除,那么似乎要去的方法是使用std::find_if()而不是std::remove_if(),并将对象定位在特定范围内:

auto it = std::find_if(v.begin() + index1, v.begin() + index2, pred);
if (it != v.begin() + index2) {
    v.erase(it);
}

如果可能有更多的元素,可以使用

v.erase(std::remove_if(v.begin() + index1, v.begin() + index2, pred), v.begin() + index2);

您可以使用v.erase()从内部范围中删除元素

这将只在index1和index2之间搜索,不包括任何一个索引。由您来确定该范围是否仍然有效。

v.erase( std::remove_if( std::begin(v) + index1 + 1, std::begin(v) + index2, pred), v.begin() + index2);
v.erase( std::remove_if( std::begin(v) + index1, std::begin(v) + index2, pred), std::begin(v) + index2 );
相关文章: