English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ map rend()يُستخدم الدالة لتعيينترتيب العكسيُرجع الم迭代ر إلى نهاية الماب (ليس العنصر الأخير، بل العنصر الذي يسبق الأخير). هذا يشبه العنصر الذي يسبق أول عنصر في المحتويات غير المعكوسة.
reverse_iterator rend(); // قبل C++ 11 const_reverse_iterator rend() const; // قبل C++ 11 reverse_iterator rend() noexcept; // من C++ 11 const_reverse_iterator rend() const noexcept; // من C++ 11
لا يوجد
ستقوم بتحويل المحول إلى العنصر التالي للعنصر الأخير في المحول في العكس
دعونا نرى مثال بسيط على دالة rend():
#include <iostream> #include <map> using namespace std; int main () { map<char,int> mymap; mymap['x'] = 100; mymap['y'] = 200; mymap['z'] = 300; map<char,int>::reverse_iterator rit; for (rit=mymap.rbegin(); rit!=mymap.rend(); ++rit){ cout << rit->first << " = " << rit->second << '\n'; } إرجاع 0; }
الخروج:
z = 300 y = 200 x = 100
في المثال السابق، تم استخدام دالة rend() لتحويل معادلة المحول إلى العنصر الأخير في المحول في العكس
因为map因此按键的排序顺序存储元素,所以在map上进行迭代将导致上述顺序,即键的排序顺序。
دعونا نظرة على مثال بسيط، باستخدام حلقة while لتصفح map في العكس
#include <iostream> #include <map> #include <string> #include <iterator> using namespace std; int main() { map<string, int> mapEx = { {"aaa", 10}, {"ddd", 11}, {"bbb", 12}, {"ccc", 13} }; map<string, int>::reverse_iterator it = mapEx.rbegin(); while (it != mapEx.rend()) { string word = it->first; int count = it->second; cout << word << " :: " << count << endl; it++; } إرجاع 0; }
الخروج:
ddd :: 11 ccc :: 13 bbb :: 12 aaa :: 10
在上面的示例中,我们使用while循环以相反的顺序遍历map。
因为map因此按键的排序顺序存储元素,所以在map上进行迭代将导致上述顺序,即键的排序顺序。
让我们看一个简单的实例。
#include <iostream> #include <map> using namespace std; int main(void) { map<char, int> m = { {'a', 1}, {'b', 2}, {'c', 3}, {'d', 4}, {'e', 5}, }; cout << "Map以相反的顺序包含以下元素:" << endl; for (auto it = m.rbegin(); it != m.rend(); ++it) cout << it->first << " = " << it->second << endl; إرجاع 0; }
الخروج:
Map以相反的顺序包含以下元素: e = 5 d = 4 c = 3 b = 2 a = 1
在上面的示例中,map的元素以相反的顺序返回。
让我们看一个简单的示例,对最高分进行排序和计算。
#include <iostream> #include <string> #include <map> using namespace std; int main () { map<int,int> emp = { { 1000, 10}, { 2500, 20 }, { 4500, 30 }, { 3000, 40 }, { 5500, 50 }}; cout << "Salary " << " | " << "ID " << '\n'; cout << "______________________\n"; map<int,int>::reverse_iterator rit; for (rit = emp.rbegin(); rit != emp.rend(); ++rit){}{ cout << rit->first << " | " << rit->second << '\n'; auto ite = emp.rbegin(); cout << "\nHighest salary: " << ite->first << " \n"; cout << "ID is: " << ite->second << "\n"; } إرجاع 0; }
الخروج:
راتب | الرقم الشخصي ______________________ 5500 | 50 4500 | 30 3000 | 40 2500 | 20 1000 | 10 أعلى راتب: 5500 الرقم الشخصي is: 50
في الأمثلة أعلاه، تم تنفيذ محرف emp، حيث يتم تخزين الرقم الشخصي كقيمة، وتخزين الراتب كحقل. مما يتيح لنا استخدام وظائف الترتيب التلقائي في map، مما يتيح لنا تحديد رقم الشخصي للعنصر ذي الراتب الأعلى.