C++ STL中的multimap::crbegin()和multimap::crend()
- multimap::crbegin() 是C++ STL中的一个内置函数,它返回一个常量反向迭代器,指向multimap容器中的最后一个元素。由于multimap容器以一种有序的方式包含元素,因此crbegin()将指向根据容器排序标准最后出现的那个元素。
语法:
multimap_name.crbegin()
参数: 该函数不接受任何参数。
返回值: 该函数返回一个常量反向迭代器,指向multimap容器中的最后一个元素。
简单示例:
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec {1, 2, 3, 4, 5};
// 以相反的顺序迭代vec的元素
for (auto it = vec.crbegin(); it != vec.crend(); ++it) {
std::cout << *it << ' ';
}
std::cout << std::endl;
return 0;
}
输出
5 4 3 2 1
// C++程序示例
// multimap::crbegin()函数
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 初始化容器
multimap<int, int> mp;
// 以随机顺序插入元素
mp.insert({ 2, 30 });
mp.insert({ 1, 40 });
mp.insert({ 3, 60 });
mp.insert({ 4, 20 });
mp.insert({ 5, 50 });
auto ite = mp.crbegin();
cout << "最后一个元素是 {" << ite->first
<< ", " << ite->second << "}\n";
// 打印元素
cout << "\n以相反的顺序打印multimap: \n";
cout << "键\t元素\n";
for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {
cout << itr->first
<< '\t' << itr->second << '\n';
}
return 0;
}
输出
最后一个元素是 {5, 50}
以相反的顺序打印multimap:
键 元素
5 50
4 20
3 60
2 30
1 40
- multimap::crend() 是C++ STL中的一个内置函数,它返回一个常量反向迭代器,指向multimap容器中第一个元素之前的一个理论元素。由于multimap容器以一种有序的方式包含元素,因此crend()将指向根据容器排序标准理论上位于第一个元素之前的元素。
语法:
multimap_name.crend()
参数: 该函数不接受任何参数。
返回值: 该函数返回一个常量反向迭代器,指向multimap容器中第一个元素之前的一个理论元素。
// C++程序示例
// multimap::crend()函数
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 初始化容器
multimap<int, int> mp;
// 以随机顺序插入元素
mp.insert({ 2, 30 });
mp.insert({ 1, 40 });
mp.insert({ 3, 60 });
mp.insert({ 4, 20 });
mp.insert({ 5, 50 });
// 打印元素
cout << "\n以相反的顺序打印multimap: \n";
cout << "键\t元素\n";
for (auto itr = mp.crbegin(); itr != mp.crend(); ++itr) {
cout << itr->first
<< '\t' << itr->second << '\n';
}
return 0;
}
输出
反向multimap是:
关键字 元素
5 50
4 20
3 60
2 30
1 40
让我们看一下表格形式的不同之处:
ID | multimap::crbegin() | multimap::crend() |
---|---|---|
1. | 它用于返回指向容器中最后一个元素的const_reverse_iterator | 它用于返回指向容器中第一个元素前面的理论元素的const_reverse_iterator |
2. | 它的语法是:const_reverse_iterator crbegin(); | 它的语法是:const_reverse_iterator crend(); |
3. | 它不采用任何参数。 | 它不采用任何参数。 |
4. | 它的复杂度是常数级别。 | 它的复杂度是常数级别。 |
5. | 它的迭代器有效性不会发生改变。 | 它的迭代器有效性不会发生改变。 |