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

来源:互联网 发布:java eclipse下载 编辑:程序博客网 时间:2024/05/22 09:50
插入迭代器
front_inserter(c)//list、deque
back_inserter(c)//vector、list、deque
inserter(c,c_iter)//在c的c_iter处插入

front_insertercopy(c.begin(),c.end(),front_inserter/back_inserter(insert_container));back_inserterfill_n(back_inserter(iVec),10,1);inserterreplace_copy(iVec.begin(),iVec.end(),inserter(iLst.begin,iterPosition),0,999);
iostream迭代器
//istream_iteratoristream_iterator<int> bindIter(cin),endIter;//vector<int> iVec;//while (bindIter != endIter)//{//iVec.push_back(*bindIter++);//}//or         vector<int> iVec(bindIter,endIter);//ostream_iteratorostream_iterator<int> output(cout,"\t");unique_copy(iVec.begin(),iVec.end(),output);
//综合使用//读入cin中int,偶数放入文件outFileOdd,奇数放入文件outFileEvenistream_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、数组
原创粉丝点击