English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set crend()函数用于以相反的顺序将常量迭代器返回到集合的末尾(最后一个元素之后的元素)。这类似于非反转容器的第一个元素之前的元素。
const_reverse_iterator crend() const noexcept; //从 C++ 11开始
没有
它将const_reverse_iterator返回到反转容器的最后一个元素之后的元素。
不变。
没有变化。
容器被访问。
同时访问集合的元素是安全的。
此函数永远不会引发异常。
让我们看一下crend()函数的简单示例:
#include <iostream> #include <set> using namespace std; int main () { set<int> myset = {40,20,50,10,30}; cout << "myset以相反的顺序:"; for (auto rit = myset.crbegin(); rit != myset.crend(); ++rit) cout << ' ' << *rit; cout << '\n'; return 0; }
Sortie :
myset est inversé: 50 40 30 20 10
Dans l'exemple ci-dessus, l'utilisation de la fonction crend() retourne l'itérateur constant en sens inverse à l'élément suivant du dernier élément du conteneur en sens inverse.
Comme la set stocke les éléments dans un ordre de tri des clés, l'itération de la set entraînera l'ordre ci-dessus, c'est-à-dire l'ordre de tri des clés.
Laissez-nous voir un exemple simple, itérant sur le ensemble en ordre inverse avec une boucle while :
#include <iostream> #include <set> #include <string> #include <iterator> using namespace std; int main() { // Créer et initialiser un ensemble de chaînes & int set<string> setEx = {"ccc", "ddd", "aaa", "bbb"}; //Créer un itérateur de set et le pointing à la fin du set set<string>::const_reverse_iterator it = setEx.crbegin(); // Parcourir le ensemble avec l'itérateur jusqu'au début. while (it != setEx.crend()) { // Accéder à la clé de l'élément pointé par elle. string word = *it; cout << word << endl; // Incrementer l'itérateur pour pointer au prochain élément it++; } return 0; }
Sortie :
ddd ccc bbb aaa
Dans l'exemple ci-dessus, nous utilisons une boucle while pour itérer sur le ensemble dans un ordre inverse.
Comme la set stocke les éléments dans un ordre de tri des clés, l'itération de la set entraînera l'ordre ci-dessus, c'est-à-dire l'ordre de tri des clés.
Laissez-nous voir un exemple simple :
#include <iostream> #include <set> #include <algorithm> using namespace std; int main() { set<int> c = {3, 1, 2}); for_each(c.crbegin(), c.crend(), [](const int& x) { cout << x << endl; }); }
Sortie :
3 2 1
Dans l'exemple ci-dessus, les éléments de la set sont retournés dans un ordre inverse.
Laissez-nous voir un exemple simple pour trier et calculer les scores les plus élevés :
#include <iostream> #include <string> #include <set> using namespace std; int main () { set<int> emp = {1000,2500,4500,1200,3000}; cout << "Salaire" << '\n'; cout << "______________________\n"; set<int>::const_reverse_iterator rit; for (rit = emp.crbegin(); rit != emp.crend(); ++rit) cout << *rit << '\n'; auto ite = emp.crbegin(); cout << "\nSalaire le plus élevé : "<< *ite << " \n"; return 0; }
Sortie :
Salaire ______________________ 4500 3000 2500 1200 1000 Salaire le plus élevé : 4500
Dans l'exemple ci-dessus, une collection set emp a été mise en œuvre, où les salaires sont stockés en tant que clé. Cela nous permet d'utiliser la fonction de tri automatique des salaires et de déterminer le salaire le plus élevé.