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

C++ set rend() 사용법 및 예제

C++ STL Set(집합)

C ++ set setrend()函数用于以相反的顺序

将迭代器返回到集合的末尾(不是最后一个元素,而是过去的最后一个元素)。这类似于非反转容器的第一个元素之前的元素。-注意:

这是一个占位符。此位置没有元素,尝试访问是未定义的行为。

      语法                             //const_reverse_iterator rend() const; ++ 11
reverse_iterator rend();                 //const_reverse_iterator rend() const; ++ 11
      直到 C               //const_reverse_iterator rend() const noexcept;++ 11从 C
reverse_iterator rend() noexcept;   //const_reverse_iterator rend() const noexcept;++ 11从 C

参数

没有

返回值

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

复杂性

不变。

迭代器有效性

没有变化。

数据争用

容器被访问。const版本和非const版本都不会修改容器。

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

异常安全

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

예시1

让我们看一下rend()函数的简单示例:

#include <iostream>
#include <set>
using namespace std;
int main () {
   set<int> myset = {40,50,20,10,30};
   cout << "元素是 :";
   for (auto rit = myset.rbegin(); rit != myset.rend(); ++rit)
      cout << ' ' << *rit;
      cout << '\n';
   return 0;
}

출력:

元素是 : 50 40 30 20 10

在上面的示例中,rend()函数用于将反向迭代器返回到反向容器的最后一个元素之后的元素。

위의 예제에서는 역순으로 집합을 순회하는 while 루프를 사용했습니다.

예시2

让我们看一个简单的示例,使用while循环以相反的顺序遍历集合:

#include <iostream>
#include <set>
#include <string>
#include <iterator>
using namespace std;
 
쉽게 볼 수 있는 예제를 보여드리겠습니다:
 
	// 创建和初始化一组字符串& int
	set<string> setEx = {"aaa", "bbb", "ccc", "ddd"};
 
	// 创建一个set迭代器并指向set的末尾
	set<string>::reverse_iterator it = setEx.rbegin();
 
	// 使用迭代器遍历集合直到开始。
	while (it != setEx.rend()) {
		// 从它所指向的元素访问键。
		string word = *it;
 
		cout << word << endl;
 
		// 增加迭代器以指向下一个条目
		it++_rIter
	}
	return 0;
}

출력:

ddd
ccc
bbb
bbb

aaa

위의 예제에서는 역순으로 집합을 순회하는 while 루프를 사용했습니다.

예시3

set은 키의 정렬 순서에 따라 요소를 저장하기 때문에 set을 순회하면 키의 정렬 순서대로 순회됩니다.

#include <set>  
#include <iostream>  
  
쉽게 볼 수 있는 예제를 보여드리겠습니다:  
   using namespace std;     
   int main() {1_rIter  
   set<int> s1set<int>::iterator s  
   _Iter;1.rend( );  
   << "역집합이 됩니다: " <<1); 10 set<int>::reverse_iterator s  
   << "역집합이 됩니다: " <<1); 2.insert(  
   << "역집합이 됩니다: " <<1); 3.insert(  
  
   << "역집합이 됩니다: " <<1_rIter();1_rIter = s  
   << "역집합이 됩니다: " <<1cout << "." << endl;--_rIter  
   0 ");  
        cout << "반집합의 마지막 요소는 " *<< "역집합이 됩니다: " <<1s  
  
   // <   
   // end를 사용하여 반복을 종료할 수 있습니다  
   집합을 순서대로 돌아다니는 방법  
   cout << "역집합이 됩니다: ";1cout << "set 집합은: ";1_Iter = s1.begin( ) ; s1_Iter != s1.end( ); s++ .rend( ); s  
      cout << *<< "역집합이 됩니다: " <<1_Iter  
   _rIter << " ";  
  
   // _Iter << " ";   
   // rend를 사용하여 반복을 종료할 수 있습니다
   집합을 역순으로 돌아다니는 방법  
   cout << "역집합이 됩니다: ";1_rIter();1for ( s1.rbegin( ) ; s1_rIter != s1cout << "." << endl;++ .rend( ); s  
      cout << *<< "역집합이 됩니다: " <<1);  
   _rIter << " ";  
  
   << "역집합이 됩니다: " <<1_rIter();1_rIter = s  
   << "역집합이 됩니다: " <<1cout << "." << endl;--_rIter  
   << "역집합이 됩니다: " <<1; *<< "역집합이 됩니다: " <<1.erase (  
  
   << "역집합이 됩니다: " <<1_rIter();1_rIter = s  
   --<< "역집합이 됩니다: " <<1.rend( );  
   _rIter;  
        cout << "삭제된 후, 마지막 요소는 " *<< "역집합이 됩니다: " <<1s  
}

출력:

 10.
set 집합은: 10 20 30 .
역집합은: 30 20 10 .
삭제된 후, 반집합의 마지막 요소는 20.

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

예시4

최고 점수를 정렬하고 계산하는 예제를 보여주겠습니다:

#include <iostream>
#include <string>
#include <set>
using namespace std;
int main ()
{
  set<int> emp = {1000,2500,4500,5000,3000};
   cout << "급여" << '\n';
   cout << "______________________\n";
   
  set<int>::reverse_iterator rit;
    for (rit = emp.rbegin(); rit != emp.rend(); ++rit)
    cout << *rit << '\n';
    auto ite = emp.rbegin();
 
    cout << "\n최고 급여: "<< *ite << " \n";
  return 0;
  }

출력:

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

위의 예제에서는 set emp를 구현했으며, ID를 값으로 저장하고 급여를 키로 저장했습니다. 이로 인해 우리는 집합의 자동 정렬 기능을 활용할 수 있으며, 가장 높은 급여를 가진 요소의 ID를 식별할 수 있습니다.

C++ STL Set(집합)