![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a3c51bc0c15932108c76c3898168f358.png)
将[First, Last]区间中的元素复制到_Dest为起点的目标区,同时将其中与_oldval相等的所有元素移除
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/47c8cd846d8894d8565fa637081cce8c.png)
将[First, Last]区间中的元素复制到_Dest为起点的目标区,同时将其中造成_Pred(elem)结果为true的所有元素移除
都返回目标区间中最后一个被复制元素的下一位置
复杂度:线性,执行比较动作或调用_Pred()numElems次
使用例子:
template<typename T>
inline void INSERT_ELEMENTS(T& coll, int first, int last)
{
for (int i = first; i <= last; ++i)
{
coll.insert(coll.end(), i);
}
}
template<typename T>
inline void PRINT_ELEMENTS(const T & coll, const string& optcstr = "")
{
cout << optcstr;
for (auto elem : coll)
{
cout << elem << ' ';
}
cout << endl;
}
int main()
{
list<int>a;
INSERT_ELEMENTS(a, 1, 6);
INSERT_ELEMENTS(a, 1, 9);
PRINT_ELEMENTS(a);
remove_copy(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "), 3);
cout << endl;
remove_copy_if(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "), [](int elem) {return elem > 4; });
multiset<int>b;
remove_copy_if(b.cbegin(), b.cend(), inserter(b, b.end()), bind(less<int>(), _1, 4));
PRINT_ELEMENTS(b);
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c227cd6b6c3e41f8813129347ba27052.png)