C++ 基礎(chǔ)教程

C++ 流程控制

C++ 函數(shù)

C++ 數(shù)組 & 字符串

C++ 數(shù)據(jù)結(jié)構(gòu)

C++ 類 & 對象

C++ 指針

C++ 繼承

C++ STL 教程

C++ 參考手冊

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

C++ STL Set(集合)

C ++ set rbegin()函數(shù)用于返回引用set容器的最后一個元素的反向迭代器。

set 的反向迭代器沿相反方向移動并遞增,直到到達(dá)set容器的開頭(第一個元素)。

語法

      reverse_iterator rbegin();                            //直到 C ++ 11
const_reverse_iterator rbegin() const;                //直到 C ++ 11
      reverse_iterator rbegin() noexcept;              //從 C++ 11開始
const_reverse_iterator rbegin() const noexcept;  //從 C++ 11開始

參數(shù)

沒有

返回值

它返回反向的迭代器(reverse iterator),該迭代器指向集合的最后一個元素。

復(fù)雜性

不變。

迭代器有效性

沒有變化。

數(shù)據(jù)爭用

可以訪問非const版本或const版本都不能修改集合容器的集合。同時訪問集合的元素是安全的。

異常安全

此函數(shù)永遠(yuǎn)不會引發(fā)異常。

實例1

讓我們看一下rbegin()函數(shù)的簡單示例:

#include <iostream>
#include <set>

using namespace std;

int main ()
{
  set<int> myset= {10,50,30,40,20};
  
  // 顯示內(nèi)容:
  cout<<"元素是: "<<endl;
  set<int>::reverse_iterator rit;
  for (rit=myset.rbegin(); rit!=myset.rend(); ++rit)
    cout << *rit<< '\n';

  return 0;
}

輸出:

元素是: 
50
40
30
20
10

在上面的示例中,rbegin()函數(shù)用于返回指向myset集合中最后一個元素的反向迭代器。

因為set因此按鍵的排序順序存儲元素,所以對set進(jìn)行迭代將導(dǎo)致上述順序,即鍵的排序順序。

實例2

讓我們看一個簡單的示例,使用while循環(huán)以相反的順序遍歷集合:

#include <iostream>
#include <set>
#include <string>
#include <iterator>

using namespace std;
 
int main() {
 
	// 創(chuàng)建 & 初始化set字符串
	set<string> setEx = {"aaa", "ccc", "ddd", "bbb"};
 
	// 創(chuàng)建一個set迭代器并指向set的末尾
	set<string, int>::reverse_iterator it = setEx.rbegin();
 
	// 使用迭代器遍歷集合直到開始。
	while (it != setEx.rend()) {
		// 從其指向的元素訪問KEY(鍵)。
		string word = *it;
  
		cout << word << endl;
 
		// 增加迭代器以指向下一個條目
		it++;
	}
	return 0;
}

輸出:

ddd
ccc
bbb
aaa

在上面的示例中,我們使用while循環(huán)以相反的順序迭代集合,并使用rbegin()函數(shù)初始化集合的最后一個元素。

因為set因此按鍵的排序順序存儲元素,所以對set進(jìn)行迭代將導(dǎo)致上述順序,即鍵的排序順序。

實例3

讓我們看一個簡單的示例,以獲取反向集合的第一個元素:

#include <set>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;     
   set <int> s1;  
   set <int>::iterator s1_Iter;  
   set <int>::reverse_iterator s1_rIter;  
  
   s1.insert( 10 );  
   s1.insert( 20 );  
   s1.insert( 30 );  
  
   s1_rIter = s1.rbegin( );  
   cout << "反集的第一個元素是 "  
        << *s1_rIter << "." << endl;  
  
   // begin可用于開始迭代  
   // 按順序通過一個集合
   cout << "set集合是:";  
   for ( s1_Iter = s1.begin( ) ; s1_Iter != s1.end( ); s1_Iter++ )  
      cout << " " << *s1_Iter;  
   cout << endl;  
  
   // rbegin可用于開始迭代   
   // 以相反的順序通過一個集合
   cout << "反向set集合是:";  
   for ( s1_rIter = s1.rbegin( ) ; s1_rIter != s1.rend( ); s1_rIter++ )  
      cout << " " << *s1_rIter;  
   cout << endl;  
  
   // 可以通過解除對set元素的鍵的引用來刪除該元素   
   s1_rIter = s1.rbegin( );  
   s1.erase ( *s1_rIter );  
  
   s1_rIter = s1.rbegin( );  
   cout << "刪除之后,第一個元素 "  
        << "在反向集中是 "<< *s1_rIter << "." << endl;  
        
return 0;        
}

輸出:

反集的第一個元素是 30.
set集合是: 10 20 30
反向set集合是: 30 20 10
刪除之后,第一個元素 在反向集中是 20.

實例4

讓我們看一個簡單的示例來對最高分進(jìn)行排序和計算:

#include <iostream>
#include <string>
#include <set>

using namespace std;

int main ()
{
  set<int> marks = {400, 350, 465, 290, 410};

   cout << "分?jǐn)?shù)" << '\n';
   cout<<"______________________\n";
   
  set<int>::reverse_iterator rit;
  for (rit=marks.rbegin(); rit!=marks.rend(); ++rit)
    cout << *rit<< '\n';

    auto ite = marks.rbegin();
 
    cout << "\n最高分?jǐn)?shù)是: "<< *ite <<" \n";

  return 0;
  }

輸出:

分?jǐn)?shù)
______________________
465
410
400
350
290

最高分?jǐn)?shù)是: 465

在以上示例中,實現(xiàn)了以標(biāo)記為鍵的設(shè)置標(biāo)記。這使我們能夠利用自動分類的優(yōu)勢并識別最高分?jǐn)?shù)。

C++ STL Set(集合)

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清