C++ Primer Chapter 10-4

来源:互联网 发布:海洋知乎 编辑:程序博客网 时间:2024/05/22 01:34
1:ostream_iterator 的定义和 istream_iterator 比较类似,但是 ostream_iterator 不能定义不绑定任何流对象的迭代器

2:ostream_iterator 对象绑定流对象时,还可以多加一个 C 风格字符串,保证每次输出数据输出该字符
  1. ostream_iterator<int> out_iter(cout,"dbd");//定义一个out_iter 输出流迭代器,在每次输出数据后,输出"bdf" 三个字符。

3:泛型算法中迭代器相关的参数,作为输入可以用输入流迭代器,作为输出用的可以用输出迭代器。例如:
  1. istream_iterator<int> iter(cin), end;
  1. ostream_iterator<int> out_iter(cout, " ");
  1. copy(iter, end, out_iter);
  2. *out_iter = accumalate(iter,end,0);
直接将输入送到输出每次加一个空格, 红色那句是直接输出入流的数据和。

4:类对象只要重载了输入输出流运算符,就可以用输入输出流迭代器

5:输入流迭代器只要遇到文件结尾或者输入错误都会使其被置为尾迭代器。

(关于输入流迭代器建立时的问题)输入流迭代器一旦建立开始读数据,会读入一个数据然后再开始执行剩下的语句。所以在建立输入流迭代器之前就要输出提示输入的语句

7:再对一个流对象同时使用好几个流迭代器输入时,需要注意各个流迭代器读取顺序,还有流对象的状态关乎所有迭代器的运行。

8:定义流对象一定记得指明处理的底层数据的类型

9:反向迭代器的 ++ 是向容器的前部移动,而 -- 向容器的尾部移动。

10:迭代器不管是普通的还是反向的,他们都是左闭合区间反迭代器可以向普通迭代器转换,这时候普通迭代器会指向反向迭代器所指元素后面一个元素(这里的后面就是空间上的)。

11:流迭代器器是不存在反向迭代器的。

12:反向迭代器的增加向前移动,所以关于序列的逆序操作,可以用反向迭代器利用泛型算法操作,完成逆序操作
0 0