English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ map crend()函数用于将常量迭代器以相反的顺序返回到map的末尾(返回一个常量反向迭代器,指向第一个元素之前虚拟的元素)。这类似于非反转容器的第一个元素之前的元素。
注意:-这是一个占位符。此位置没有元素,尝试访问是未定义的行为。
注意:常量迭代器是指向常量内容的迭代器。
const_reverse_iterator crend() const noexcept; //C++ 11 从
没有
它将const_reverse_iterator返回到反转容器的最后一个元素之后的元素。
让我们看一个简单的crend()函数示例。
#include <iostream> #include <map> using namespace std; int main () { map<char,int> mymap; mymap['x'] = 100; mymap['y'] = 200; mymap['z'] = 300; // 展示内容: map<char,int>::const_reverse_iterator rit; for (rit=mymap.crbegin(); rit!=mymap.crend(); ++rit) cout << rit->first << " = " << rit->second << '\n'; return 0; }
Sortie :
z = 300 y = 200 x = 100
在上面的示例中,使用crend()函数将常量反向迭代器返回到反向容器最后一个元素之后的元素。
Comme la map stocke les éléments dans un ordre de tri des clés, l'itération sur la map entraînera l'ordre ci-dessus, c'est-à-dire l'ordre de tri des clés.
让我们看一个简单的示例,使用while循环以相反的顺序遍历map。
#include <iostream> #include <map> #include <string> #include <iterator> using namespace std; int main() { //创建和初始化String和Ints的map map<string, int> mapEx = { { "aaa", 10 }, { "ddd", 11 }, { "bbb", 12 }, { "ccc", 13 } }; //创建一个map迭代器并指向map的末尾 map<string, int>::const_reverse_iterator it = mapEx.crbegin(); //使用Iterator迭代map直到开始。 while (it != mapEx.crend()) { string word = it->first; int count = it->second; cout << word << " :: " << count << endl; it++; } return 0; }
Sortie :
ddd :: 11 ccc :: 13 bbb :: 12 aaa :: 10
Dans l'exemple ci-dessus, nous utilisons une boucle while pour itérer sur la map dans un ordre inverse.
Comme la map stocke les éléments dans un ordre de tri des clés, l'itération sur la map entraînera l'ordre ci-dessus, c'est-à-dire l'ordre de tri des clés.
Voyons un exemple simple.
#include <iostream> #include <map> using namespace std; int main(void) { /* Constructeur d'initialisation */ map<char, int> m = { {'a', 1}, {'b', 2}, {'c', 3}, {'d', 4}, {'e', 5}, }; cout << "La map contient les éléments suivants dans un ordre inverse:" << endl; for (auto it = m.crbegin(); it != m.crend(); ++it) cout << it->first << " = " << it->second << endl; return 0; }
Sortie :
La map contient les éléments suivants dans un ordre inverse: e = 5 d = 4 c = 3 b = 2 a = 1
Dans l'exemple ci-dessus, les éléments de la map sont renvoyés dans un ordre inverse.
Voyons un exemple simple, classer et calculer le score le plus élevé.
#include <iostream> #include <string> #include <map> using namespace std; int main () { map<int,int> emp = { { 1000, 10}, { 2500, 20 }, { 4500, 30 }, { 3000, 40 }, { 5500, 50 }}; cout << "Salaire " << " | " << "ID" << '\n'; cout << "______________________\n"; map<int,int>::const_reverse_iterator rit; for (rit = emp.crbegin(); rit != emp.crend(); ++rit) cout << rit->first << " | " << rit->second << '\n'; auto ite = emp.crbegin(); cout << "\nSalaire le plus élevé: " << ite->first << ; cout << "ID est : " << ite->second << ; return 0; }
Sortie :
Salaire | ID ______________________ 5500 | 50 4500 | 30 3000 | 40 2500 | 20 1000 | 10 Salaire le plus élevé : 5500 ID est : 50
Dans l'exemple ci-dessus, une conteneur map emp est implémentée, où l'ID est stocké comme valeur et le salaire comme clé. Cela nous permet d'utiliser la fonction de tri automatique du map et de déterminer l'ID de l'élément avec le salaire le plus élevé.