English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
استخدام دالة emplace_hint() في C++ map ومثال C++ mapemplace_hint()
يستخدم هذا الدالة لتحديد العنصر الجديد في الحاوية باستخدام التلميح كموقف العنصر. يتم بناء العنصر مباشرة (لا يتم نسخه ولا تحريكه).
القواعد template<class... Args>
المعلمات: توزيع لإنشاء المعلمات التي سيتم إدراجها في الخريطة.
position: يوضح موقف إدراج العنصر الجديد.
سيقوم بتحويل إلى العنصر المدرج حديثًا. إذا كان العنصر موجودًا بالفعل، فإن عملية الإدراج تفشل ويتم تحويل إلى العنصر الحالي.
دعونا نرى مثال بسيط على إدراج العناصر في 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.
دعونا نرى مثالاً بسيطاً.
#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 عناصر: (عميق،هندسة) (راكيش،مجال الحسابات) (رام،مجال الحسابات) (سونيل،هندسة)
دعونا یک مثال سادهای از اضافه کردن عناصر به 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]
دعونا یک مثال ساده از اضافه کردن عناصر را ببینیم.
#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.