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; }
Saída:
myset em ordem inversa: 50 40 30 20 10
No exemplo acima, usamos a função crend() para retornar o iterador reverso constante para o elemento após o último elemento do contêiner reverso.
Como o set armazena os elementos na ordem de classificação dos chaves, a iteração sobre o set resulta na ordem acima, ou seja, a ordem de classificação das chaves.
Vamos ver um exemplo simples, usando um loop while para percorrer o conjunto em ordem inversa:
#include <iostream> #include <set> #include <string> #include <iterator> using namespace std; int main() { // Criar e inicializar um conjunto de strings & int set<string> setEx = {"ccc", "ddd", "aaa", "bbb"}; //Criar um iterador de conjunto e apontar para o final do conjunto set<string>::const_reverse_iterator it = setEx.crbegin(); // Usar o iterador para percorrer o conjunto até o início. while (it != setEx.crend()) { // Acessar a chave do elemento ao qual ele aponta. string word = *it; cout << word << endl; // Incrementar o iterador para apontar para o próximo item it++; } return 0; }
Saída:
ddd ccc bbb aaa
No exemplo acima, usamos um loop while para iterar sobre o conjunto em ordem inversa.
Como o set armazena os elementos na ordem de classificação dos chaves, a iteração sobre o set resulta na ordem acima, ou seja, a ordem de classificação das chaves.
Vamos ver um exemplo simples:
#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; }); }
Saída:
3 2 1
No exemplo acima, os elementos do set são retornados em ordem inversa.
Vamos ver um exemplo simples para ordenar e calcular a maior pontuação:
#include <iostream> #include <string> #include <set> using namespace std; int main () { set<int> emp = {1000,2500,4500,1200,3000}; cout << "salário" << '\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 << "\nSalário mais alto: " << *ite << " \n"; return 0; }
Saída:
Salário ______________________ 4500 3000 2500 1200 1000 Salário mais alto: 4500
No exemplo acima, foi implementado um conjunto set emp, onde o salário é armazenado como chave. Isso nos permite aproveitar a função de ordenação automática do salário e determinar o salário mais alto.