📜  C++ STL中的multimap :: crbegin()和multimap :: crend()(1)

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

C++ STL中的multimap::crbegin()和multimap::crend()

简介

在C++ STL中,multimap是一个关联式容器,它允许键和值具有相同的值。与map不同,multimap允许多个元素具有相同的键。multimap :: crbegin()和multimap :: crend()是multimap类的成员函数,它们提供了一个迭代器范围,该范围从容器的最后元素开始并延伸到第一个元素之前。这些成员函数返回的迭代器对象不能用于更改元素的值,因为它们是常量迭代器。

multimap::crbegin()

multimap :: crbegin()函数返回一个常量反向迭代器,该迭代器指向multimap容器的最后一个元素。这意味着,如果您在循环中使用此反向迭代器,则可以访问multimap中按逆序排列的元素。

#include <iostream>
#include <map>

using namespace std;

int main() {

    multimap<int, int> mm = {{1, 10}, {2,20}, {3, 30}, {4, 40}, {4, 35}};

    for (auto it = mm.crbegin(); it != mm.crend(); ++it) {
        cout << it->first << " " << it->second << endl;
    }
    return 0;
}

这将输出:

4 40
4 35
3 30
2 20
1 10
multimap::crend()

multimap :: crend()函数返回一个常量反向迭代器,该迭代器指向multimap容器的第一个元素之前的位置。这意味着,如果您在循环中使用此反向迭代器,则可以访问multimap中的所有元素。注意,在迭代器循环内部时,必须将迭代器递增并访问后,才能向迭代器进行递增。

#include <iostream>
#include <map>

using namespace std;

int main() {

    multimap<int, int> mm = {{1, 10}, {2,20}, {3, 30}, {4, 40}, {4, 35}};

    for (auto it = mm.crend(); it != mm.crbegin(); ) {
        --it;
        cout << it->first << " " << it->second << endl;
    }

    return 0;
}

这将输出:

1 10
2 20
3 30
4 40
4 35
总结

multimap :: crbegin()和multimap :: crend()函数是STL multimap容器中非常有用的常量反向迭代器。它们允许您以相反的顺序访问multimap中的元素,同时保护这些元素不受修改的操作。