C++ STL移除型算法 复制时一并移除元素remove_copy、remove_copy_if

本文介绍了C++ STL中的remove_copy和remove_copy_if算法,这两个算法在复制元素到目标区间的同时,会移除与特定值相等或满足条件的元素。它们均具有线性时间复杂度,适用于处理大量数据。文中还提供了使用示例。
摘要由CSDN通过智能技术生成

在这里插入图片描述

将[First, Last]区间中的元素复制到_Dest为起点的目标区,同时将其中与_oldval相等的所有元素移除

在这里插入图片描述

将[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);
}

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值