English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set get_allocator()يُستخدم هذا الدالة لتحويل نسخة من عميل التخصيص، الذي يساعد في بناء معينة.
allocator_type get_allocator() const; // قبل C++ 11 allocator_type get_allocator() const noexcept; // بعد C++ 11
لا يوجد
يُرجع محول مرتبط بالمجموعة.
لا يتغير.
لا يوجد تغيير.
المعينة يتم زيارتها.
الوصول إلى عناصر المجموعة يُعتبر آمنًا.
هذه الوظيفة لا ترمي أي استثناء.
دعونا نظرة على مثال بسيطًا:
#include <iostream> #include <set> using namespace std; int main(void) { set<double> m; double * p; p = m.get_allocator().allocate(3); //double هو 8 cout << "حجم التخصيص = " << sizeof(*p) * 4 << endl; return 0; }
الناتج:
حجم التخصيص = 32
دعونا نظرة على مثال بسيطًا:
#include <iostream> #include <set> using namespace std; int main () { set<int> myset; int * p; unsigned int i; // يستخدم محول myset لتخصيص مصفوفة تحتوي على 5 عناصر: p = myset.get_allocator().allocate(5); // يُعطى بعض القيم للعدد لأجل (i=0; i<5; i++) p[i] = (i+1)*10; cout << "\nالمجموعة المخصصة تحتوي على:" for (i = 0; i < 5; i++) cout << " " << p[i]; cout << "\n"; myset.get_allocator().deallocate(p, 5); return 0; }
الناتج:
المجموعة المخصصة تحتوي على: 10 20 30 40 50
دعونا نظرة على مثال بسيط، لتحقق من قابلة الموزعات للتبادل:
#include <set> #include <iostream> using namespace std; int main() { set<int>::allocator_type s1_Alloc; set<int>::allocator_type s2_Alloc; set<double>::allocator_type s3_Alloc; set<int>::allocator_type s4_Alloc; // في السطر التالي يتم إعلان العنصر // استخدم موزع افتراضي. set<int> s1; set<int>::allocator_type s2; set<double>::allocator_type s3; s1_Alloc = s1.get_allocator(); cout << "عدد الأعداد الصحيحة القابلة للإعطاء" << endl << "قبل استنفاد الذاكرة المجانية: " << s2.max_size() << "." << endl; cout << "\nعدد الأعداد العشرية القابلة للإعطاء" << endl << "قبل استنفاد الذاكرة المجانية: " << s3.max_size() << "." << endl; // في السطر التالي يتم إنشاء مجموعة s4 // استخدم موزع مجموعة s1. set<int> s4(less<int>(), s1_Alloc); s4_Alloc = s4.get_allocator(); // إذا كانت الموزعات قابلة للتبادل // يمكن أن تكون كل مساحة تخصيصها // تم إطلاقها بواسطة أخرى if (s1_Alloc == s4_Alloc) { cout << "\nهذه الموزعات قابلة للتبادل." << endl; } else { cout << "\nهذه الموزعات غير قابلة للتبادل." << endl; } return 0; }
الناتج:
عدد الأعداد الصحيحة القابلة للإعطاء قبل استنفاد الذاكرة المجانية: 1073741823. عدد الأعداد العشرية القابلة للإعطاء قبل استنفاد الذاكرة المجانية: 536870911. هذه الموزعات قابلة للتبادل.
دعونا نظرة على مثال بسيطًا:
#include <iostream> #include <set> using namespace std; int main() { set<int> c; int * p; p = c.get_allocator().allocate(2); p[0] = 42; p[1] = 43; cout << p[0] << "," << p[1] << endl; c.get_allocator().deallocate(p, 2); }
الناتج:
42، 43