前言
标准算法配合迭代器使用太美妙了,使我们对容器(数据)的处理更加得心应手。那么,能不能对IO流也使用标准算法呢?有人认为不能,他们说因为IO流不是容器,没有迭代器,故无法使用标准算法。他们错了,错在IO流确实不是容器,但它能绑定一种特殊的迭代器,叫做流迭代器。一些算法能以流迭代器为参数,对IO流进行控制。
一个经典的编程问题
从标准输入读取一些数,再将读取的不重复的数写到标准输出。
使用流迭代器巧妙解决掉上述问题
1 #include2 #include 3 #include 4 // 使用非标准的迭代器都要包含这个头文件 5 #include 6 7 using namespace std; 8 9 int main()10 {11 /*12 * 定义输入流迭代器13 * 只有键入ctrl+d结束输入后,后两句方可执行。14 */15 istream_iterator cin_it(cin);16 // 定义输入流迭代器时如果没有给参数,那么默认迭代器指向刚超出末端的位置。17 istream_iterator eof;18 19 // 输入流迭代器作为参数给vector容器赋值20 vector vec(cin_it, eof);21 22 // 对vec容器元素进行排序23 sort(vec.begin(), vec.end());24 25 // 创建输出流迭代器26 ostream_iterator output(cout, " | ");27 28 cout << endl;29 // 将vec容器内容复制到输出流30 unique_copy(vec.begin(), vec.end(), output);31 32 cout << endl;33 34 return 0;35 }
运行结果: