c++ - 如何从 vector 中删除第一次出现的值?

标签 c++ c++11

我试图从 vector 中获取单个元素并将其推到 vector 的后面,然后将其删除,这样内存中就不会出现空白部分。 erase-remove 习语可以做到这一点,但它会删除特定值的所有 实例。我只想删除第一个。

我对标准库算法不太熟悉,也找不到合适的方法(如果有的话)来执行此操作。这是一个例子:

int main() {
    std::vector<int> v{1, 2, 3, 3, 4};

    remove_first(v, 3);

    std::cout << v; // 1, 2, 3, 4
}

那么我该如何从这个 vector 中移除第一次出现的 3 呢?

最佳答案

先找到,再删除:

auto it = std::find(v.begin(),v.end(),3);
// check that there actually is a 3 in our vector
if (it != v.end()) {
  v.erase(it);
}

关于c++ - 如何从 vector 中删除第一次出现的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14737780/

相关文章:

c++ - printf 如何在小数点后打印 53 位?

c++ - 如何获取存储在 std::function 中的 c 风格函数的地址?

c++ - 将 R 值传递给采用 L 值的函数时的重载歧义

c++ - 定义宏时 `(...)`是什么意思?

c++ - 为什么 `std::unordered_map` "speak like the Yoda"- 重新排列元素?

c++ - 在派生类中使用 std::unique_ptr 的 Pimpl

c++ - 将 std::visit 与可变模板结构一起使用

c++ - 我应该使用哪个容器

c# - 构造函数/析构函数链接错误

类模板中的 C++ std::enable_if,用于成员函数