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開始
沒有
它返回反向的迭代器(reverse iterator),該迭代器指向集合的最后一個元素。
不變。
沒有變化。
可以訪問非const版本或const版本都不能修改集合容器的集合。同時訪問集合的元素是安全的。
此函數(shù)永遠(yuǎn)不會引發(fā)異常。
讓我們看一下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)致上述順序,即鍵的排序順序。
讓我們看一個簡單的示例,使用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)致上述順序,即鍵的排序順序。
讓我們看一個簡單的示例,以獲取反向集合的第一個元素:
#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.
讓我們看一個簡單的示例來對最高分進(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ù)。