以前只知道IteratorIterator class。平时编程中用的最多的就是拿他遍历某种容器。
今天遇到一种新的使用方式,记录之。
比如有这样一个任务,从标准输入设备读取一串string元素,将它们存到vector内,并进行排列,最后再将这些字符串写回标准输出设备,一般代码大都会是这样的.(已经注释掉的)
#include<iostream> #include<iterator> #include<algorithm> #include<vector> #include<string> using namespace std; int main(){ string word; /*vector<string>text; while (cin>>word){ text.push_back(word); } sort(text.begin(), text.end()); for (int ix = 0; ix < text.size(); ix++) cout << text[ix] << ‘ ‘;*/ istream_iterator<string> is(cin); //将is绑定至标准输入设备 istream_iterator<string> eof; //表示要读取的最后一个元素的下一个位置,对标准输入设备而言,end-of-file即代表last,只要在定义istream_iterator时不为他指定istream对象,它便代表end-of-file。 vector<string> text; copy(is, eof, back_inserter(text)); //back_inserter是Iterator Inserter,所谓的insertionadapter,避免使用容器的赋值符,因为使用=必须事先决定一个容器的大小。 sort(text.begin(), text.end()); ostream_iterator<string> os(cout, " "); copy(text.begin(), text.end(), os); return 0; }
但是通过iostream iterator可以用上述(没有注释掉的)的方法进行实现。
如果要输入到文件中可以添加如下代码
ifstream in_file("文件名"); ofstream out_file("文件名"); if (!in_file || !out_file){ cerr << "unable to open the necessary files.\n"; return -1 }2017-04-21 21:55:35
时间: 2024-10-28 11:29:27