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()函数的反向遍历结果与正向遍历的结果是不同的。