📜  C++ : Vector删除所有指定的元素(1)

📅  最后修改于: 2023-12-03 15:13:53.775000             🧑  作者: Mango

C++: Vector删除所有指定的元素

在 C++ 中,vector 是一个非常常用的容器,它可以动态存储数据,并且具有一些方便的函数,如删除所有指定的元素。

函数语法

以下是删除所有指定元素的函数的语法:

vector_name.erase(std::remove(vector_name.begin(), vector_name.end(), value), vector_name.end());

其中,vector_name 是要删除元素的向量名称,value 是要删除的元素。

函数说明

erase() 函数从指定的 vector 中删除一个或多个元素,它的返回值是一个迭代器,指向删除元素的下一个元素的位置。

remove() 函数从 vector 中删除一个元素,并将其余元素左移以填补空白。remove() 函数并不真正删除元素,而是将元素移动到 vector 的尾部,并返回指向新的逻辑结尾的迭代器。为了从 vector 中删除所有指定元素,必须使用 erase() 函数。

代码示例

下面是一个使用 erase()remove() 函数删除 vector 中所有指定元素的代码示例:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    vector<int> vec {1, 2, 3, 2, 4, 2, 5, 2};

    // 删除 vector 中所有值为 2 的元素
    vec.erase(std::remove(vec.begin(), vec.end(), 2), vec.end());

    // 输出结果
    for (auto i : vec)
        std::cout << i << " ";

    return 0;
}

输出结果为:

1 3 4 5
结论

使用 erase()remove() 函数,可以方便地删除 vector 中所有指定元素。但是,这种方法在性能上可能有些损失,因为要对每个元素进行比较和移动。对于较大的 vector 和需要高性能的应用程序,可能需要使用其他方法来删除元素。