📅  最后修改于: 2023-12-03 15:13:53.775000             🧑  作者: Mango
在 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 和需要高性能的应用程序,可能需要使用其他方法来删除元素。