English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل الأساسيات C++

تحكم في العملية C++

الوظائف في C++

مجموعات بيانات C++ & 字وغرافات

هياكل بيانات C++

مفاهيم C++ & الأجسام

المراجع في C++

الوراثة في C++

دليل STL C++

دليل مرجع C++

استخدام C++ set rend() و مثال

Set (الجمع) في STL C++

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

المعدل

لا يوجد

القيمة المعدة

سيقوم بتحويل م迭代ر إلى العنصر التالي للعنصر الأخير في العنصر المعكوس.

التعقيد

لا يتغير.

أمان الم迭代ر

لا يوجد تغيير.

نزاع البيانات

المعينة يتم زيارتها. النسخة الثابتة والنسخة غير الثابتة لن تؤدي إلى تعديل المعينة.

زيارة عناصر المجموعة في نفس الوقت آمنة.

أمان الاستثناء

هذه الوظيفة لن تسبب أي استثناء.

مثال 1

دعونا نرى مثالًا بسيطًا لعنوان 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 يؤدي إلى الترتيب التالي، وهو ترتيب الأنواع.

مثال 2

دعونا نرى مثالًا بسيطًا، باستخدام الدائرة 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 يؤدي إلى الترتيب التالي، وهو ترتيب الأنواع.

مثال 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.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 تُرجع في ترتيب معكوس.

مثال 4

دعنا نرى مثال بسيط لتصنيف وتحليل أعلى النقاط:

#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 العنصر الأعلى الراتب.

Set (الجمع) في STL C++