繁体   English   中英

从std :: vector移除元素

[英]Removing element from std::vector

我想使用以下方法从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 );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM