C ++ set crend()函数用于以相反的顺序将常量迭代器返回到集合的末尾(最后一个元素之后的元素)。这类似于非反转容器的第一个元素之前的元素。
const_reverse_iterator crend() const noexcept; //从 C++ 11开始
没有
它将const_reverse_iterator返回到反转容器的最后一个元素之后的元素。
不变。
没有变化。
容器被访问。
同时访问集合的元素是安全的。
此函数永远不会引发异常。
让我们看一下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进行迭代将导致上述顺序,即键的排序顺序。
让我们看一个简单的示例,使用while循环以相反的顺序遍历集合:
#include <iostream> #include <set> #include <string> #include <iterator> using namespace std; int main() { // 创建和初始化一组字符串& int set<string> setEx = {"ccc", "ddd", "aaa", "bbb"}; //创建一个set迭代器并指向set的末尾 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
在上面的示例中,我们使用while循环以相反的顺序对集合进行const_iterate。
因为set因此按键的排序顺序存储元素,所以对set进行迭代将导致上述顺序,即键的排序顺序。
让我们看一个简单的实例:
#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的元素以相反的顺序返回。
让我们看一个简单的示例来对最高分进行排序和计算:
#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
在上面的示例中,实现了一个set 集合emp,其中薪水存储为键。这使我们能够利用工资的自动排序功能,并确定最高工资。