C++代码编程学习:泛型编程风格——iterator学习三(Essential C++ 第三章)

C++中泛型编程风格------iterator学习,挺有难度,概念很抽象,这里主要把一些知识点和习题给过一遍!

一、前言

C++中泛型编程风格------iterator学习(Essential C++ 第三章)。

二、例题

-P225 练习 3.4

编写一个程序,利用istream iterator 从标准输人设备读取一连串整数。利用ostreamiterator 将其中的奇数写至某个文件,每个数值皆以空格分隔。再利用ostream iterator 将偶数写到另一个文件,每个数值单独放在一行中。

cpp 复制代码
class even_elem {
public:
	bool operator()(int elem)
	{
		return elem % 2 ? false : true;
	}
};


int main()
{

	vector<int> input;

	// 输入需要判断的数组
	istream_iterator<int> in(cin), eos;

	// 把需要判断的数组再赋值给input
	copy(in, eos, back_inserter(input));

	vector<int>::iterator division = partition(input.begin(), input.end(), even_elem());

	//1) 简单调试
	ostream_iterator<int> evenFile(cout, " ");
	ostream_iterator<int> oddFile(cout, " ");

	// 这个copy用的太棒了,从input头部读到division为偶数,从division读到input.end()为奇数
	copy(input.begin(), division, evenFile);
	cout << endl;
	copy(division, input.end(), oddFile);

	//2) 保存成为文件
	ofstream even_file("C:\\desktop\\even_file");
	ofstream odd_file("C:\\desktop\\odd_file");

	if (!even_file || !odd_file)
	{
		cerr << "Essential file do not exist!\n";
		return -1;
	}

	// 绑定文件关系
	ostream_iterator<int> even_iter(even_file, "\n"), odd_iter(odd_file, "\n");

	copy(input.begin(), division, even_iter);
	copy(division, input.end(), odd_iter);

}
  • 这道题非常的赞哦,有三个非常重要的知识点:
  • 1)istream_iterator<int> in(cin), eos; ------ 该代码有效地节省了cin函数输入地冗杂,但是调试上需要注意,如果输入的是整数数组,需要在按下回车之后,输入其他类型的数据,如字符型的a,如下图所示。
  • 2)copy()函数的使用非常重要;
  • 3)ostream_iterator<int> even_iter(even_file, "\n"), odd_iter(odd_file, "\n"); 文件绑定也非常值得学习一下。

代码是在 visual studio 中编写的,该软件还是比较好用的,我安装的是2022专业版;

共勉!

相关推荐
belldeep4 分钟前
如何阅读、学习 Tcc (Tiny C Compiler) 源代码?如何解析 Tcc 源代码?
c语言·开发语言
LuckyTHP5 分钟前
java 使用zxing生成条形码(可自定义文字位置、边框样式)
java·开发语言·python
a东方青2 小时前
蓝桥杯 2024 C++国 B最小字符串
c++·职场和发展·蓝桥杯
小Tomkk2 小时前
2025年PMP 学习十五 第10章 项目资源管理
学习·pmp·项目pmp
oceanweave2 小时前
【K8S学习之生命周期钩子】详细了解 postStart 和 preStop 生命周期钩子
学习·kubernetes
XiaoyaoCarter3 小时前
每日一道leetcode
c++·算法·leetcode·职场和发展·二分查找·深度优先·前缀树
Blossom.1183 小时前
使用Python实现简单的人工智能聊天机器人
开发语言·人工智能·python·低代码·数据挖掘·机器人·云计算
da-peng-song3 小时前
ArcGIS Desktop使用入门(二)常用工具条——数据框工具(旋转视图)
开发语言·javascript·arcgis
galaxy_strive3 小时前
qtc++ qdebug日志生成
开发语言·c++·qt
TNTLWT3 小时前
Qt功能区:简介与安装
开发语言·qt