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

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

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

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

مجموعات C++ و سلاسل

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

فئات C++ و كائنات

المؤشرات في C++

الاستنساخ في C++

دليل C++ STL

دليل مرجعي C++

استخدام دالة rend() في C++ map و أمثلة

map (المستودعات) في C++ STL

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

الم 参数

لا يوجد

الناتج

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

مثال 1

دعونا نرى مثال بسيط على دالة 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上进行迭代将导致上述顺序,即键的排序顺序。

مثال 2

دعونا نظرة على مثال بسيط، باستخدام حلقة 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上进行迭代将导致上述顺序,即键的排序顺序。

实例3

让我们看一个简单的实例。

#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的元素以相反的顺序返回。

实例4

让我们看一个简单的示例,对最高分进行排序和计算。

#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، مما يتيح لنا تحديد رقم الشخصي للعنصر ذي الراتب الأعلى.

map (المستودعات) في C++ STL