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; ^
版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com