C++ STL中的multimap rend函数

C++ STL中的multimap rend函数

multimap是C++ STL中的一个关联式容器,它可以存储多个key相同的kv对,而且多个kv对会按key的大小顺序排列。其中,rend()函数是multimap的成员函数之一,用于获取一个指向反向起始位置的迭代器。

rend函数的语法

rend函数的语法非常简单,可以用如下代码表示:

multimap_name.rend();

rend函数的作用

rend函数可以获取一个指向反向起始位置的迭代器,这个迭代器指向的kv对通常是multimap的最后一个元素。在使用迭代器实现multimap元素遍历时,可以使用rend函数结合rbegin函数来实现反向遍历。

下面的代码展示了使用multimap的rbegin和rend函数反向遍历的方法:

#include <iostream>
#include <map>

using namespace std;

int main()
{
    multimap<string, int> myMultiMap;
    myMultiMap.insert(make_pair("apple", 10));
    myMultiMap.insert(make_pair("banana", 20));
    myMultiMap.insert(make_pair("apple", 30));
    myMultiMap.insert(make_pair("orange", 40));
    myMultiMap.insert(make_pair("banana", 50));
    myMultiMap.insert(make_pair("apple", 60));
    myMultiMap.insert(make_pair("pineapple", 70));

    // 反向遍历multimap的元素
    multimap<string, int>::reverse_iterator it = myMultiMap.rbegin();
    for (it; it != myMultiMap.rend(); it++)
    {
        cout << it->first << " => " << it->second << endl;
    }

    return 0;
}

这段代码中,在myMultiMap容器的末尾添加了七个元素。然后反向遍历这些元素,并输出它们的键和值的组合。

代码说明

这个程序使用multimap容器创建了一个带有字符串键和整数值的容器。multimap中有3个”apple” key的kv对,所以它们会按照值的大小顺序排列。

我们使用rbegin函数获取一个指向容器末尾的反向迭代器。然后使用for循环迭代该反向迭代器,并输出它们的键和值的组合。

最后的输出结果是:

pineapple => 70
banana => 50
orange => 40
apple => 60
apple => 30
banana => 20
apple => 10

结论

rend()函数是C++ STL中multimap容器的成员函数之一,它能够获取一个指向容器末尾反向位置的迭代器,用于实现反向遍历。由于multimap容器中的kv对是按照键的大小顺序排列,所以使用rend()和rbegin()函数的反向遍历结果与正向遍历的结果是不同的。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程