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

تعليمية C++ الأساسية

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

وظيفة C++

مجموعات C++ والصفوف

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

فئات C++ وأشياء

مؤشرات C++

الوراثة C++

تعليمية STL C++

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

استخدام C++ map والمعايير

map جزء من C++ STL (المكتبة القياسية للتمثيلات). map هي وعاء مرتب للقيم المفتاحية المرتبطة، حيث يكون كل مفتاح فريد، يمكن إدراجه أو حذفه، لكن لا يمكن تعديله. ومع ذلك، يمكن تعديل القيمة المرتبطة بالمفتاح.

مثال:مستودع موظفين مكتوب بلغة C++، حيث يكون معرف الموظف المفتاح، والاسم القيمة، يمكن تمثيله كالتالي:

المفتاحالقيمة
101Nikita
102Robin
103Deep
104John

اللغة

template < class Key,                     //map::key_type
           class T, // map::mapped_type
           class Compare = less, // map::key_compare
           class Alloc = allocator<pair> // map::allocator_type
           > class map;

المعلمات

key:نوع البيانات للمفتاح الذي سيتم تخزينه في map.

نوعنوع البيانات لقيمة التي سيتم تخزينها في map.

compare:مقارن يأخذ إثنين من المعلمات من نوع bool ويعود قيمة. هذا المعامل هو اختياري، والقيمة الافتراضية هي less <“key”>.

alloc:نوع نوع الموزع المرتبط بالكائن. هذا المعامل هو اختياري، والقيمة الافتراضية هي الموزع.

إنشاء map

يمكنك إنشاء map بسهولة باستخدام الجملة التالية:

typedef pair<const Key, T> value_type;

الجملة التالية ستستخدم لإنشاء مفتاح نوعهنوع مفتاحوقيمة valueنوعلـ value_typeمن نوع map.نقطة هامة هي أن مفتاح map والقيمة المطلوبة دائمًا يتم إدراجهما معًا، لا يمكنك إدراج مفتاح فقط أو قيمة فقط في map.

مثال 1

#include <string.h>  
#include <iostream>  
#include <map>  
#include <utility>  
using namespace std;  
int main()
{
   mapEmployees;
   // 1) استخدام رمز مؤشرات المصفوفة للتعيين
   Employees[101] = "Nikita";
   Employees[105] = "John";
   Employees[103] = "Dolly";
   Employees[104] = "Deep";
   Employees[102] = "Aman";
   cout << "Employees[104]=" << Employees[104] << endl << endl;
   cout << "حجم Map: " << Employees.size() << endl;
   cout << endl << "ترتيب طبيعي:" << endl;
   لـ(مجري::ايتيراتور ii = Employees.begin(); ii != Employees.end(); ++ii)
   {
       cout << (*ii).first << " : " << (*ii).second << endl;
   }
   cout << endl << "ترتيب عكسي:" << endl;
   for( map::reverse_iterator ii=Employees.rbegin(); ii!=Employees.rend(); ++ii)
   {
       cout << (*ii).first << " : " << (*ii).second << endl;
   }
}

الإخراج:

Employees[104]=Deep
حجم الخريطة: 5
الترتيب الطبيعي:
101: Nikita
102: Aman
103: Dolly
104: Deep
105: John
ترتيب عكسي:
105: John
104: Deep
103: Dolly
102: Aman
101: Nikita

وظائف عضو

هذه قائمة بجميع وظائف عضو خريطة:

المؤسسين/المدمجين

الوظيفةالوصف
constructorsبناء الخريطة
destructorsمدمج الخريطة
operator=نسخ عناصر الخريطة إلى وعاء خريطة آخر

المتجهات

الوظيفةالوصف
beginإرجاع ميتبر إعادة التدوير للبداية
cbeginإرجاع ميتبر إعادة التدوير المستقر للبداية
endإرجاع ميتبر إعادة التدوير للنهاية
cendإرجاع ميتبر إعادة التدوير المستقر للنهاية
rbeginإرجاع ميتبر إعادة التدوير للنهاية
rendإرجاع ميتبر إعادة التدوير للبداية
crbeginإرجاع ميتبر إعادة التدوير المستقر للنهاية
crendإرجاع ميتبر إعادة التدوير المستقر للبداية

الحجم

الوظيفةالوصف
emptyإذا كانت الخريطة فارغة، فسيتم إرجاع true
sizeإرجاع عدد العناصر في الخريطة
max_sizeإرجاع الحجم الأقصى للخريطة

وصول العنصر

الوظيفةالوصف
operator[]استرجاع العنصر باستخدام المفتاح المحدد
atاسترجاع العنصر باستخدام المفتاح المحدد

الوصف

الوظيفةالوصف
insertإدراج العناصر في الخريطة
eraseحذف العناصر من الخريطة
swapتبادل محتويات الخريطة
clearحذف جميع العناصر من الخريطة
emplaceإنشاء عنصر جديد وإدراجه في الخريطة
emplace_hintإنشاء عنصر جديد وإدراجه في الخريطة باستخدام التلميح

المشاهد

الوظيفةالوصف
مقارنة المفتاحإرجاع نسخة من مقارنة المفتاح
مقارنة القيمةإرجاع نسخة من مقارنة القيمة

طريقة العمل

الوظيفةالوصف
البحثالبحث عن العناصر التي تحتوي على المفتاح المحدد
عددعدد العناصر التي تطابق المفتاح المحدد
حد أدنىمستوى أدنى ميتبر للاشارة
حد اعلىالعودة إلى مؤشر إلى الحد الأعلى
equal_rangeالعودة إلى نطاق العنصر الذي يتطابق مع المفتاح المحدد

موزع

الوظيفةالوصف
get_allocatorالعودة إلى م分配ر المخصص لبناء map

وظيفة غير الأعضاء المعددة

الوظيفةالوصف
operator==التحقق من whether map الأول يساوي map الآخر
operator!=التحقق من whether map الأول يساوي map الآخر
operator<التحقق من whether map الأول أصغر من map الآخر
operator<=التحقق من whether map الأول أصغر أو يساوي map الآخر
operator>التحقق من whether map الأول أكبر من map الآخر
operator>=التحقق من whether map الأول أكبر من map الآخر
swap()تبادل عناصر mapين