《Essential C++》系列笔记之第三章(泛型编程风格)之第九节(如何使用Iterator Inserter)

《Essential C++》系列笔记之第三章(泛型编程风格)之第九节(如何使用Iterator Inserter)_第1张图片
代码实践

#include 
using namespace std;
#include 
#include 
#include 
#include 


template<typename InputIterator, typename OutputIterator, typename ElemType, typename Compare>
OutputIterator filter(InputIterator first, InputIterator last, const ElemType &value, OutputIterator at, Compare pred)
{
	while ((first = find_if(first, last, bind2nd(pred, value)))!= last)  
	{
		*at = *first;
		at++;
		first++;
	}
	return at;
}


int main()
{
	const int size = 5;
	int a[size] = { 23,7,33,23,9 };
	vector<int> ivec(a, a + size);

	int a2[size];
	vector<int> ivec2; //如果写成 vector ivec2 就没有指定大小,那么就会产生运行时的错误,但是采用insertion adapter就可以这样

	//filter(a2, a2 + size, 10, inserter(a2, a2 + size), less()); //错误 array 不支持插入
	filter(ivec.begin(), ivec.end(), 10, inserter(ivec2, ivec2.end()), less<int>()); //也可以使用back_inserter(ivec2)

	cout << ivec2.size() << endl;


	system("pause");
	return 0;
}

今天是20200313 软硬结合也不错!技多不压身嘛~

你可能感兴趣的:(《Essential,C++》系列笔记)