📅  最后修改于: 2023-12-03 14:59:45.515000             🧑  作者: Mango
C++ STL中的remove()
函数是一种操作容器元素的算法函数,其作用是将容器中与指定值相等的所有元素移动到容器的结尾并返回一个迭代器,从而实现删除指定元素的目的。同时,remove()
函数返回的迭代器指向:指定元素前的最后一个元素。
template <class ForwardIterator, class T>
ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val);
其中,first
和last
是表示要移除元素的范围的迭代器,val
是表示要移除的元素。
下面的代码展示了如何使用remove()
函数删除容器中指定元素:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
// 定义容器
vector<int> vec = {1, 2, 3, 4, 5, 6, 7};
// 删除指定元素
auto it = remove(vec.begin(), vec.end(), 3);
// 输出删除后的容器
for (auto i = vec.begin(); i != it; ++i) {
cout << *i << " ";
}
cout << endl;
return 0;
}
运行结果将输出:
1 2 4 5 6 7
remove()
函数并不会真正删除容器中的元素,而只是将相匹配的元素移动到容器末尾并返回一个迭代器。因此,需要在返回迭代器之后使用容器的erase()
函数删除多余的元素。remove()
函数只能用于支持双向迭代器的容器(如list
、deque
),而不能用于只支持单向迭代器的容器(如vector
、array
)。对于单向迭代器的容器,应该使用erase()
算法配合remove()
函数完成删除操作。