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

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

Online Tools

الوظائف الخاصة بـ C++

C++ Control Structures

C++ Arrays & Strings

C++ Data Structures

المؤشرات الخاصة بـ C++

الوراثة الخاصة بـ C++

تعليميات STL الخاصة بـ C++

C++ Classes & Objects

دليل C++

C++ STL map (المعرفات)

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

يستخدم هذا الدالة لتحديد العنصر الجديد في الحاوية باستخدام التلميح كموقف العنصر. يتم بناء العنصر مباشرة (لا يتم نسخه ولا تحريكه).

من خلال إدعاء بناء العنصر من خلال استدعاء بناء العناصر المقدمة كمعلمات للوظيفة. يتم إدراج العنصر فقط إذا لم يكن المفتاح موجودًا.

القواعد
    template<class... Args>

iterator emplace_hint(const_iterator position, Args&&...args); // بدءًا من C++ 11

المعلمات: توزيع لإنشاء المعلمات التي سيتم إدراجها في الخريطة.

position: يوضح موقف إدراج العنصر الجديد.

النتيجة

سيقوم بتحويل إلى العنصر المدرج حديثًا. إذا كان العنصر موجودًا بالفعل، فإن عملية الإدراج تفشل ويتم تحويل إلى العنصر الحالي.

مثال 1

دعونا نرى مثال بسيط على إدراج العناصر في map.

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(void) {
   map<char, int> m = {
            {'b', 20}}
            {'c', 30},
            {'d', 40},
            };
   m.emplace_hint(m.end(), 'e', 50);
   m.emplace_hint(m.begin(), 'a', 10);
  cout << "تحتوي الخريطة على العناصر التالية" << endl;
  for (auto it = m.begin(); it != m.end(); ++it){
      cout << it->first << " = " << it->second << endl;
  }
  
   return 0;
}

الإخراج:

يحتوي الخريطة على العناصر التالية
a = 10
b = 20
c = 30
d = 40
e = 50

في المثال السابق، يتم فقط إدراج العنصر الذي يحتوي على زوج المفتاح والقيمة المحدد في خريطة m.

المثال 2

دعونا نرى مثالاً بسيطاً.

#include <map>  
#include <string>  
#include <iostream>  
using namespace std;
template<typename M> void print(const M& m) {
    cout << m.size() << " عناصر: " << endl;
    for (const auto& p : m) {
        cout << "( " << p.first << "،" << p.second << ") ";
    }
    cout << endl;
}
int main()
{
    map<string, string> m1;
    m1.emplace("رام", "مجال الحسابات");
    m1.emplace("راكيش", "مجال الحسابات");
    m1.emplace("سونيل", "هندسة");
    cout << "بيانات البداية لـ map: ";
    print(m1);
    cout << endl;
    m1.emplace_hint(m1.end(), "عميق", "هندسة");
    cout << "map تم تعديلها الآن يحتوي على ";
    print(m1);
    cout << endl;
}

الإخراج:

بيانات البداية لـ map: 3 عناصر:
(راكيش،مجال الحسابات) (رام،مجال الحسابات) (سونيل،هندسة)
تم تعديل map الآن يحتوي على 4 عناصر:
(عميق،هندسة) (راكيش،مجال الحسابات) (رام،مجال الحسابات) (سونيل،هندسة)

مثال 3

دعونا یک مثال ساده‌ای از اضافه کردن عناصر به map با موقعیت مشخص شده را ببینیم.

#include <iostream>
#include <map>
using namespace std;
int main ()
{
  map<char,int> mymap;
  auto it = mymap.end();
  it = mymap.emplace_hint(it,'b',10);
  mymap.emplace_hint(it,'a',12);
  mymap.emplace_hint(mymap.end(),'c',14);
  cout << "mymap contains:";
  for (auto& x: mymap){
    cout << " [" << x.first << ':' << x.second << ']';
    cout << '\n';  
  }
  return 0;
}

الإخراج:

mymap contains: [a:12] [b:10] [c:14]

مثال 4

دعونا یک مثال ساده از اضافه کردن عناصر را ببینیم.

#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
 typedef map<string, int> city;  
   string name;
   int age;
   city fmly;
   int n;
  cout << "输入家庭成员人数 :";
  cin >> n;
  cout << "输入每个成员的姓名和年龄: \n";
   for(int i = 0; i<n; i++)
   {
       cin >> name;
       cin >> age; 
       fmly.emplace_hint(fmly.begin(),name,age);
       
   }
   
      cout << "\n家庭总成员是:" << fmly.size();
      cout << "\n家庭成员的详细信息: \n";
      cout << "\nName | Age \n ________________________ \n";
      city::iterator p;
      for(p = fmly.begin(); p!=fmly.end(); p++)
      {
          cout << (*p).first << " | " << (*p).second << " \n ";
      }
    
   return 0;
}

الإخراج:

أدخل عدد أفراد العائلة: 3
أدخل اسم وعمر كل عضو من أفراد العائلة: 
Ram 42
Sita 37
Laxman 40
عدد أفراد العائلة: 3
تفاصيل أفراد العائلة: 
الاسم    |  العمر 
__________________________
Laxman | 40 
Ram      | 42 
Sita       | 37

في المثال أعلاه، يتم إدراج العنصر فقط بناءً على اختيار المستخدم في بداية map.

C++ STL map (المعرفات)