C++ STL中的deque crbegin

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;
     ^

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程