利用输入迭代器从标准输入设备读取一连串整数。利用输出迭代器将奇数写入文件用空格分开,将偶数写入文件每个数值在一行。

利用泛型算法partition(),接受一组迭代器以及一个一元运算操作。返回true的元素在返回false的前面。
另外,不保证顺序的正确性,要保证顺序的相对确定,使用stable_partition()。

关于使用输入迭代器从标准输入设备读取一连串整数的退出问题,输入任意一个非int值即可。(希望不只有我一个人有这样的问题,在百度并没有找到答案,最后自己尝试出来,铁憨憨无疑了-_-)

#include <iostream>
#include <iterator>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
	ofstream out1("odd.txt");  //创建存储奇数,偶数的文件,并打开
	ofstream out2("even.txt");
	if (!out1 || !out2)
	{
		cerr << "cannot find the file " << endl;
		return -1;
	}

	istream_iterator<int> iit(cin); //iostream iterator
	istream_iterator<int> eof;

	vector<int> number; //将输入流的int值保存在vector中
	copy(iit, eof, back_inserter(number)); //使用back_inserter()将int插入在vector之后,否则原本vector为空,用默认=会报错

	class even_elem //function object
	{
	public:
		bool operator()(int elem)
		{
			return elem % 2 ? false : true;
		}
	};

	vector<int>::iterator division = partition(number.begin(), number.end(), even_elem()); //进行分割,返回true在false的前面
	
	ostream_iterator<int> out1it(out1, "\n"); 
	ostream_iterator<int> out2it(out2, " ");
	
	copy(number.begin(), division, out2it);
	copy(division, number.end(), out1it);

	system("pause");
	return 0;
}
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页