C++ STL中的deque crbegin
deque::crbegin 意思是constant_reverse_beginner,正如名称所示,它返回一个指向deque的最后一个元素的constant_reverse_iterator(常量反向迭代器)。
什么是constant iterator?
常量迭代器不用于修改。它仅用于访问元素。您可以使用非常量迭代器来修改元素。
语法:
dequename.crbegin()
返回值: 它返回一个指向序列反向开始的const_reverse_iterator(常量反向迭代器)。
应用:
给定一个按递增顺序排列数字的deque,按非递增顺序打印它们。
输入: deque{1, 2, 3, 4, 5, 6};
**for (auto reverseit = deque.crbegin(); reverseit != deque.crend(); ++reverseit)
cout << ‘ ‘ << *reverseit; **
输出: : 6 5 4 3 2 1
下面的程序说明了crbegin函数的工作原理:
// deque::crbegin 和 crend
#include <deque>
#include <iostream>
using namespace std;
int main()
{
// 声明一个名为numdeque的deque
deque<int> numdeque = { 1, 2, 3, 4, 5, 6 };
// 使用crbegin和crend反向打印deque
cout << "反向打印numdeque:";
for (auto rit = numdeque.crbegin(); rit != numdeque.crend(); ++rit)
cout << ' ' << *rit;
return 0;
}
反向打印numdeque:6 5 4 3 2 1
由于返回的迭代器是常数,如果我们试图更改值,将会得到编译器错误。
// deque::crbegin 和 crend
#include <deque>
#include <iostream>
using namespace std;
int main()
{
// 声明一个名为numdeque的deque
deque<int> numdeque = { 1, 2, 3, 4, 5, 6 };
// 使用crbegin和crend反向打印deque
cout << "反向打印numdeque:";
for (auto rit = numdeque.crbegin(); rit != numdeque.crend(); ++rit)
*rit = 10;
return 0;
}
输出:
prog.cpp: In function ‘int main()’:
prog.cpp:14:8: error: assignment of read-only location ‘rit.std::reverse_iterator<_Iterator>::operator* >()’
*rit = 10;
^