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

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

C++ STL Set(집합)

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

语法

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

参数

没有

返回值

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

复杂

不变。

迭代器有效性

没有变化。

数据争用

容器被访问。

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

异常安全

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

예시1

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

출력:

myset은 반대 순서로: 50 40 30 20 10

위의 예제에서는 crend() 함수를 사용하여 상수 반대 이터레이터를 반대 컨테이너의 마지막 요소 다음의 요소로 반환합니다.

set은 키의 정렬 순서에 따라 요소를 저장하므로 set을迭代하면 키의 정렬 순서대로의 순서가 됩니다.

예시2

반대 순서로 집합을 탐색하는 간단한 예제를 보겠습니다:

#include <iostream>
#include <set>
#include <string>
#include <iterator>
using namespace std;
 
int main() {
 
	// 집합과 문자열& int을 생성 및 초기화합니다.
	set<string> setEx = {"ccc", "ddd", "aaa", "bbb"};
 
	//집합의 마지막 요소를 가리키는 이터레이터를 생성합니다
	set<string>::const_reverse_iterator it = setEx.crbegin();
 
	// 이터레이터를 사용하여 집합을 시작까지 탐색합니다.
	while (it != setEx.crend()) {
		// 그것이 가리키는 요소에서 키에 접근합니다.
		string word = *it;
 
		cout << word << endl;
 
		// 다음 항목을 가리키는 증가형 이터레이터
		it++;
	}
	return 0;
}

출력:

ddd
ccc
bbb
aaa

위의 예제에서는 반대 순서로集合을 const_iterate하는 while루프를 사용했습니다.

set은 키의 정렬 순서에 따라 요소를 저장하므로 set을迭代하면 키의 정렬 순서대로의 순서가 됩니다.

예시3

간단한 예제를 보겠습니다:

#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;
  });
}

출력:

3
2
1

위의 예제에서 set의 요소는 반대 순서로 반환됩니다.

예시4

높은 점수를 정렬하고 계산하기 위한 간단한 예제를 보겠습니다:

#include <iostream>
#include <string>
#include <set>
using namespace std;
int main ()
{
  set<int> emp = {1000,2500,4500,1200,3000};
   cout << "봉급" << '\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 << "\n최고 급여: " << *ite << " \n";
  return 0;
  }

출력:

급여
______________________
4500
3000
2500
1200
1000
최고 급여: 4500

위의 예제에서는 salEmp 이름의 set 집합을 구현했습니다. 이는 급여를 키로 저장하여 자동 정렬 기능을 활용하고 최고 급여를 결정할 수 있게 합니다.

C++ STL Set(집합)