📜  在C++ STL中映射crbegin()和crend()函数(1)

📅  最后修改于: 2023-12-03 15:07:52.329000             🧑  作者: Mango

C++ STL中映射crbegin()和crend()函数

在C++ STL(标准模板库)中,map是一种关联容器,允许程序员使用键值对的形式进行数据存储。

crbegin()crend()是map容器中的两个成员函数,它们分别返回一个常量反向迭代器,指向map容器的最后一个元素和第一个元素前面的位置,可以用于逆序遍历map容器。

crbegin()

crbegin()返回一个常量反向迭代器,指向map容器的最后一个元素。

语法
auto it = map.crbegin();
参数

无。

返回值

一个常量反向迭代器,指向map容器的最后一个元素。

示例
#include <iostream>
#include <map>

int main() {
    // 创建一个map容器
    std::map<int, std::string> map = {{1, "apple"}, {2, "banana"}, {3, "orange"}};

    // 从最后一个元素开始遍历map并输出
    for (auto it = map.crbegin(); it != map.crend(); it++) {
        std::cout << it->first << " " << it->second << std::endl;
    }

    return 0;
}

输出结果:

3 orange
2 banana
1 apple
crend()

crend()返回一个常量反向迭代器,指向map容器第一个元素前面的位置。

语法
auto it = map.crend();
参数

无。

返回值

一个常量反向迭代器,指向map容器第一个元素前面的位置。

示例
#include <iostream>
#include <map>

int main() {
    // 创建一个map容器
    std::map<int, std::string> map = {{1, "apple"}, {2, "banana"}, {3, "orange"}};

    // 从第一个元素前面的位置开始遍历map并输出
    for (auto it = map.crend(); it != map.crbegin(); it--) {
        std::cout << it[-1].first << " " << it[-1].second << std::endl;
    }

    return 0;
}

输出结果:

1 apple
2 banana
3 orange

注意事项:

  • crend()返回的迭代器指向的是第一个元素前面的位置,因此循环条件应该是迭代器不等于crbegin(),而不是不等于crend()。在循环体内,应该先通过[-1]操作符将迭代器移到当前元素,再进行操作。
  • crbegin()crend()返回的都是常量反向迭代器,不能通过迭代器修改map容器中的元素。