English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ set crend() 使用方法及示例

C++ STL Set ( Conjunto )

C ++ set crend()函数用于以相反的顺序常量迭代器返回到集合的末尾(最后一个元素之后的元素)。这类似于非反转容器的第一个元素之前的元素。

语法

const_reverse_iterator crend() const noexcept;       //从 C++ 11开始

参数

没有

返回值

它将const_reverse_iterator返回到反转容器的最后一个元素之后的元素。

复杂

不变。

迭代器有效性

没有变化。

数据争用

容器被访问。

同时访问集合的元素是安全的。

异常安全

此函数永远不会引发异常。

Exemplo1

让我们看一下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.

Exemplo2

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.

Exemplo3

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.

Exemplo4

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.

C++ STL Set ( Conjunto )