【C++ Primer 第10章】再探迭代器

反向迭代器

• 反向迭代器就是在容器中从尾元素向首元素反向移动的迭代器。对于反向迭代器,递增(以及递减)操作的含义会颠倒过来。

• 递增一个反向迭代器(++it)会移动到前一个元素;递减一迭代器(--it)会移动到下一个元素。

• 除了forward_list之外,其他容器都支持反向迭代器。我们可以通过调用rbegin、rcend、crbegin和crend成员函数来获得反向迭代器。这些成员函数返回指向容器尾元素和首元素之前一个位置的迭代器。与普通迭代器一样,反向迭代器也有const和非const版本。

 1 #include<iostream>
 2 #include<vector>
 3 #include<iterator>
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     vector<int> vec = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
 9     for (auto r_iter = vec.crbegin(); r_iter != vec.crend(); ++r_iter)
10         cout << *r_iter << " "; 
11     cout << endl;
12     return 0;
13 }

输出结果:

虽然颠倒递增和递减运算符的含义可能令人混淆,但这样做是我们可以用算法透明地向前或向后处理容器。例如,可以通过向sort传递一对反向迭代器来将vector整理为递减序:

sort(vec.begin(),vec.end()); 
sort(vec.rbegin(),vec.rend());

猜你喜欢

转载自www.cnblogs.com/sunbines/p/9108094.html