我想使用 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()
从内部范围中删除元素。
关于c++ - 从 std::vector 中移除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22735891/