1、remove(ForwardIterator first, ForwardIterator last, const T& val):删除序列中等于给定值的所有元素,保留的元素存放在容器的前部且相对次序不变。容器的size不变。
一般remove算法要与容器的成员函数erase配合使用才能真正删除元素,即:erase——remove惯用法:
std::vector<int> c; c.reserve(10); //向c中添加元素 for (int i = 0; i < 10; i++) { c.push_back(i); } //删除c中等于5所有元素 c.erase(std::remove(c.begin(), c.end(), 5), c.end()); for (auto var : c) { std::cout << var << ","; } //打印结果:0,1,2,3,4,6,7,8,9,
2、remove_if(ForwardIterator first, ForwardIterator last, UnaryPredicate pred):删除序列中满足给定谓词pred的元素,保留的元素存放在容器的前部且相对次序不变。容器的size不变。
std::vector<int> c; c.reserve(10); //向c中添加元素 for (int i = 0; i < 10; i++) { c.push_back(i); } //删除c中大于5的所有元素 c.erase(std::remove_if(c.begin(), c.end(), [](int element){ return element > 5; }), c.end()); //输出c for (auto var : c) { std::cout << var << ","; } //打印结果:0,1,2,3,4,5,
3、remove_copy(InputIterator first, InputIterator last, OutputIterator result, const T&val):把一个序列中不等于给定值的元素复制到另一个序列中
std::vector<int> c; std::vector<int> result; result.resize(10); c.reserve(10); //向c中添加元素 for (int i = 0; i < 10; i++) { c.push_back(i); } //复制c中不等于5的元素到result中 std::remove_copy(c.begin(), c.end(), result.begin(), 5); //输出result for (auto var : result) { std::cout << var << ","; } //打印结果:0,1,2,3,4,6,7,8,9,0
4、remove_copy_if(InputIterator first, InputIterator last, OutputIterator result, UnaryPredicate pred):把一个序列中不满足给定谓词pred的元素复制到另一个序列中
std::vector<int> c; std::vector<int> result; result.resize(10); c.reserve(10); //向c中添加元素 for (int i = 0; i < 10; i++) { c.push_back(i); } //复制c中小于等于5的元素到result中 std::remove_copy_if(c.begin(), c.end(), result.begin(), [](int element){ return element > 5; }); //输出result for (auto var : result) { std::cout << var << ","; } //打印结果:0,1,2,3,4,5,0,0,0,0