Chapter 19.C++中的迭代器类型

插入迭代器
front_inserter(c)//list、deque
back_inserter(c)//vector、list、deque
inserter(c,c_iter)//在c的c_iter处插入

front_inserter
copy(c.begin(),c.end(),front_inserter/back_inserter(insert_container));

back_inserter
fill_n(back_inserter(iVec),10,1);

inserter
replace_copy(iVec.begin(),iVec.end(),inserter(iLst.begin,iterPosition),0,999);
iostream迭代器
//istream_iterator
	istream_iterator<int> bindIter(cin),endIter;
	//vector<int> iVec;
	//while (bindIter != endIter)
	//{
	//	iVec.push_back(*bindIter++);
	//}
	//or
         vector<int> iVec(bindIter,endIter);


//ostream_iterator
ostream_iterator<int> output(cout,"\t");
unique_copy(iVec.begin(),iVec.end(),output);
//综合使用
//读入cin中int,偶数放入文件outFileOdd,奇数放入文件outFileEven
	istream_iterator<int> inBindIter(cin),inEndIter;
	ofstream outFileEven,outFileOdd;
	outFileEven.open("outFileEven.txt");
	outFileOdd.open("outFileOdd.txt");
	if (! outFileEven || ! outFileOdd)
	{
		cerr<<"outFile error!"<<endl;
		return -1;
	}
	ostream_iterator<int> outBindIterEven(outFileEven,"\t"),outBindIterOdd(outFileOdd,"\t");
	while (inBindIter != inEndIter)
	{
		if (*inBindIter % 2 == 0)
		{
			*outBindIterEven++=*inBindIter++;
		}
		else
		{
			*outBindIterOdd++=*inBindIter++;
		}
	}
	outFileEven.close();
	outFileOdd.close();
反向迭代器
因为iostream迭代器不支持--,所以不支持反向迭代器
const迭代器
不可修改迭代器所指元素值,比如只是想读出元素,即可用const迭代器

总结

5种迭代器
输入迭代器 读,只支持++ istream_iterator
输出迭代器 写,只支持++ ostream_iterator
前向迭代器 读和写,只支持++
双向迭代器 读和写,支持++、-- map、set、list
随机访问迭代器 读和写,支持完整的迭代器算术运算++、--、+、-、+=、-= etc. vector、deque、string、数组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值