C++ STL中的multimap::crbegin()和multimap::crend()
1. 概述
在C++ STL中,multimap是一个关联容器,其中的元素可以被视为一个有序的元素对集合。其中每个元素对中的第一个元素被称为key,第二个元素被称为value。multimap::crbegin()和multimap::crend()是两个用于反向遍历容器的迭代器函数。其中multimap::crbegin()返回的是一个指向最后一个元素的const_reverse_iterator类型的迭代器,而multimap::crend()返回的则是一个指向代表容器范围终止的const_reverse_iterator类型的迭代器。
2. multimap::crbegin()的用法
multimap::crbegin()函数返回的是一个指向最后一个元素的const_reverse_iterator类型的迭代器。以下是该函数的语法:
const_reverse_iterator crbegin( ) const noexcept;
其中,const_reverse_iterator是一个指向multimap中元素的反向迭代器类型,即以逆序顺序遍历multimap中所有元素的迭代器类型。
下面的代码展示了如何使用multimap::crbegin()函数:
#include <iostream>
#include <map>
using namespace std;
int main() {
multimap<int, char> mymultimap = {{1, 'a'}, {2, 'b'}, {2, 'c'}, {3, 'd'}, {3, 'e'}, {3, 'f'}};
cout << "Elements in the multimap using crbegin(): ";
for (auto rit = mymultimap.crbegin(); rit != mymultimap.crend(); ++rit)
cout << "{" << rit->first << "," << rit->second << "} ";
cout << endl;
return 0;
}
运行结果:
Elements in the multimap using crbegin(): {3,f} {3,e} {3,d} {2,c} {2,b} {1,a}
在上述代码中,我们首先使用multimap容器初始化一个名为mymultimap的multimap对象。接着,我们使用multimap::crbegin()函数返回一个指向容器中最后一个元素的反向迭代器,并使用一个名为rit的auto类型变量来指向这个迭代器。然后我们使用for循环及反向迭代器遍历整个容器,并在每次迭代时输出迭代器当前指向元素的key和value值。
3. multimap::crend()的用法
multimap::crend()函数返回的是一个指向代表容器范围终止的const_reverse_iterator类型的迭代器。以下是该函数的语法:
const_reverse_iterator crend( ) const noexcept;
下面的代码示范了如何使用multimap::crend()函数:
#include <iostream>
#include <map>
using namespace std;
int main() {
multimap<int, char> mymultimap = {{1, 'a'}, {2, 'b'}, {2, 'c'}, {3, 'd'}, {3, 'e'}, {3, 'f'}};
cout << "Elements in the multimap using crend(): ";
for (auto rit = mymultimap.crbegin(); rit != mymultimap.crend(); ++rit)
cout << "{" << rit->first << "," << rit->second << "} ";
cout << endl;
return 0;
}
运行结果:
Elements in the multimap using crend(): {3,f} {3,e} {3,d} {2,c} {2,b} {1,a}
和multimap::crbegin()函数一样,这里我们同样使用multimap容器初始化一个名为mymultimap的multimap对象,使用multimap::crbegin()函数返回一个指向容器中最后一个元素的反向迭代器,并使用一个名为rit的auto类型变量来指向这个迭代器。然后我们使用for循环及反向迭代器遍历整个容器,并在每次迭代时输出迭代器当前指向元素的key和value值。最后,我们使用std::endl操作符输出一个换行符。
4. 总结
multimap::crbegin()和multimap::crend()是两个用于反向遍历multimap容器的迭代器函数。multimap::crbegin()函数返回的是一个指向最后一个元素的const_reverse_iterator类型的迭代器,而multimap::crend()返回的则是一个指向代表容器范围终止的const_reverse_iterator类型的迭代器。我们可以使用这两个函数来在多重映射中反向遍历元素,并使用它们来执行各种与迭代器相关的操作。