c++ - 从 std::vector 中移除元素

标签 c++ std

我想使用 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/

相关文章:

c# - 在实际应用方面,C、C# 和 C++ 之间有什么区别?

c++ - 非指针类成员 : how good is it?

c++ - 如何使用模板为 "using"声明 "std::array"

c++ - 通过隐式转换为字符串流式传输对象时重载解析失败

c++ - 声明会影响 std 命名空间吗?

c++ - 使用 C++“ Hook ”内存地址?

c++ - 检测方 block opencv和c++

c++ - 编译器如何知道指针的类型

c++ - 如何在 std::map 中停止从 int 到 float 的自动转换,反之亦然

c++ - template<T> 类中 T 的 vector 的 vector