chapter16_10.cpp
#include <iostream>
#include <iterator>
#include <vector>
int main(){
using namespace std;
int casts[10] = {6, 7, 2, 9, 4, 11, 8, 7, 10, 5};
vector<int> dice(10); //定义了一个包含10个元素的vector容器
copy(casts, casts + 10, dice.begin()); //从非容器类型copy数据到vector容器
cout << "Let the dice be cast!\n";
ostream_iterator<int, char> out_iter(cout, " "); //定义输出迭代器,第一个模板参数(int)指出了被发送给输出流的数据类型,
//第二个模板参数(这里是char)指出了输出流使用的字符类型,
//构造函数的第一个参数(这里是cout)指出了要使用的输出流(也可以定义ofstream流输出数据到文件),
//最后一个字符串参数是在发送给输出流的每个数据后显示的分隔符
copy(dice.begin(), dice.end(), out_iter); //copy容器dice内的数据给out_iter迭代器指向的位置,这里指向了cout,即直接输出dice的数据到显示器
cout<<endl;
cout<<"Implicit use of reverse iterator.\n";
copy(dice.rbegin(), dice.rend(), out_iter); //使用rbegin和rend,反向输出dice内容到显示器
cout << endl;
cout << "Explicit use of reverse iterator.\n";
vector<int>::reverse_iterator ri; //这里定义了一个反向输出迭代器
for(ri = dice.rbegin(); ri != dice.rend(); ++ri) //使用反向输出迭代器通过递增的方式从容器尾向容器头读取数据
cout << *ri << ' '; //使用迭代器时,迭代器就相当于一个指针,这里要输出容器内的值,就要对指针进行解引用
cout << endl;
return 0;
}