读书人

STL之迭代器例证二

发布时间: 2012-10-16 09:57:37 作者: rapoo

STL之迭代器事例二

/*
输入输出,正反迭代器的使用;
程序输出:
Let the dice be cast!
6 7 4 5 2 6 7 10 16 5
Implicit use of reverse iterator.
5 16 10 7 6 2 5 4 7 6
Explicit use of reverse iterator.
5 16 10 7 6 2 5 4 7 6
*/
#include <iostream>
#include <iterator>
#include <vector>

using namespace std;

int main()
{
int casts[10] = {6, 7, 4, 5, 2, 6, 7, 10, 16, 5};
vector<int> dice(10);
//copy from array to vector
copy(casts, casts + 10, dice.begin());
cout << "Let the dice be cast! \n";
//create an ostream iterator
ostream_iterator<int, char> out_iter (cout, " ");
//copy from vector to output
copy(dice.begin(), dice.end(), out_iter);
cout << endl;
cout << "Implicit use of reverse iterator. \n";
copy(dice.rbegin(), dice.rend(), out_iter);
cout <<endl;
cout << "Explicit use of reverse iterator. \n";
vector<int>:: reverse_iterator riter;
for (riter = dice.rbegin(); riter != dice.rend(); ++riter)
{
cout << *riter << ' ';
}

cout << endl;
getchar();
return 0;
}

注意:

一、copy()不仅仅可以将信息从一个容器复制到另一个容器中,还可以将信息从容器复制到输出流,从输入流复制到容器中。还可以使用copy()将信息插入到另一个容器中。

二、rbegin()和end()返回相同的值(超尾),但类型不同(reverse_iterator和iterator)。rend()和begin()同理。

读书人网 >编程

热点推荐