以下是三种利用迭代器逆向输出vector中内容的方式:
//整理自互联网和c++primer及其习题解答
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec;
int i;
cin >> i;
while (i != -1)
{
vec.push_back(i);
cin >> i;
}
cout << "反向迭代器输出: " << endl;//反向迭代器reverse_iterator,从rbegin(=end)到rend(=begin-1)反向遍历,仍然通过++
vector<int>::reverse_iterator it= vec.rbegin();
while (it != vec.rend())
{
cout << *it << " " ;
++it;
}
cout << endl << "普通的迭代器逆序输出方式1: "<< endl;
vector<int>::iterator iter= vec.end();
while( iter != vec.begin())
{
cout << *(--iter) << " ";
}
cout << endl << "普通的迭代器逆序输出方式2: "<< endl;
vector<int>::iterator iter1 = vec.begin(),
iter2 = vec.end();
while (iter2 != iter1)
cout << *(--iter2) << " ";
//不能写成如下的循环形式,由于iter的自减肯定是在循环体内语句之后,所以s输出最后一个数之后会产生越界
//for (vector<int>::iterator iter = vec.end()-1; iter != vec.begin(); --iter)
//{
// cout << *iter << " ";
//}
return 0;
}