English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set 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 <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() لتحويل م迭代ر إلى العنصر التالي للعنصر الأخير في العنصر المعكوس.
بسبب أن set تقوم بترتيب الأنواع بشكل طبيعي، فإن التدوير عبر set يؤدي إلى الترتيب التالي، وهو ترتيب الأنواع.
دعونا نرى مثالًا بسيطًا، باستخدام الدائرة while لمرور عكس الترتيب عبر المجموعة:
#include <iostream> #include <set> #include <string> #include <iterator> using namespace std; int main() { // إنشاء وتحديد مجموعة من الأنواع & int set<string> setEx = {"aaa", "bbb", "ccc", "ddd"}; // إنشاء م迭代ر وتوجيهه إلى نهاية المجموعة set<string>::reverse_iterator it = setEx.rbegin(); // مرور عبر المجموعة باستخدام م迭代ر حتى البداية. while (it != setEx.rend()) { // الحصول على المفتاح من العنصر الذي يشير إليه. string word = *it; cout << word << endl; // زيادة م迭代ر ليتجه إلى المدخل التالي it++; } return 0; }
الخروج:
ddd ccc bbb aaa
في المثال السابق، نستخدم الدائرة while لمرور عكس الترتيب عبر المجموعة.
بسبب أن set تقوم بترتيب الأنواع بشكل طبيعي، فإن التدوير عبر set يؤدي إلى الترتيب التالي، وهو ترتيب الأنواع.
دعونا نرى مثال بسيطًا:
#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.rend( ); s1_rIter--; cout << "العنصر الأخير في المجموعة العكسية هو "; << *s1_rIter << "." << endl; // end يمكن استخدامها لتحديد النهاية // بترتيب عبر مجموعة cout << "المجموعة هي: "; for ( s1_Iter = s1.begin( ); s1_Iter !!=! s1.end( ); s1_Iter++) cout << *s1_Iter << " "; cout << "." << endl; // rend يمكن استخدامها لتحديد النهاية // بترتيب معكوس عبر مجموعة cout << "المجموعة العكسية هي: "; for ( s1_rIter = s1.rbegin( ); s1_rIter !!=! s1.rend( ); s1_rIter++) cout << *s1_rIter << " "; cout << "." << endl; s1_rIter = s1.rend( ); s1_rIter--; s1.erase( *s1_rIter ); s1_rIter = s1.rend( ); --s1_rIter; cout << "بعد الحذف، العنصر الأخير " << "المجموعة العكسية هي " << *s1_rIter << "." << endl; }
الخروج:
العنصر الأخير في المجموعة العكسية هو 10. المجموعة هي: 10 20 30 . المجموعة العكسية هي: 30 20 10 . بعد الحذف، العنصر الأخير في المجموعة العكسية هو 20.
في المثال السابق، عناصر set تُرجع في ترتيب معكوس.
دعنا نرى مثال بسيط لتصنيف وتحليل أعلى النقاط:
#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; لـ (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 العنصر الأعلى الراتب.