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

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

تحكم في تدفق C++

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

مجموعات بيانات C++ وروابط

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

فئات C++ وعمليات

المراجع في C++

الوراثة في C++

دليل STL لـ C++

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

استخدام مكوّن بناء C++ set (المكوّن البديهي) ومثال

STL Set (الجمع) في C++

يُستخدم مكوّن set في C++ لأغراض خمس

  1. المكوّن البديهيلإنشاء وعاء فارغ يحتوي على عناصر صفر

  2. مكوّن النطاقلإنشاء وعاء تحتوي على نطاق محتوى من [first،last)

  3. مكوّن النسخلإنشاء مجموعة تحتوي على نسخ من عناصر وعاء موجود

  4. مكوّن الاستبداللإنشاء وعاء باستخدام لغة الاستبدال مع عناصر أخرى

  5. مكوّن برامج التشغيل المُؤسسلإنشاء مجموعة تحتوي على قائمة برامج التشغيل

النحو

المكوّن البديهي

explicit set (const key_compare& comp = key_compare(),
              const allocator_type& alloc = allocator_type()); // إلى C++ 11
explicit set (const key_compare& comp = key_compare(),
              const allocator_type& alloc = allocator_type());
explicit set (const allocator_type& alloc); // بدءًا من C++ 11

وظيفة بناء النطاق

template <class InputIterator>
  set (InputIterator first, InputIterator last,
       const key_compare& comp = key_compare(),
       const allocator_type& alloc = allocator_type()); // إلى C++ 11
template <class InputIterator>
  set (InputIterator first, InputIterator last,
       const key_compare& comp = key_compare(),
       const allocator_type& = allocator_type()); // بدءًا من C++ 11

وظيفة بناء النسخ

set (const set& x); // إلى C++ 11
set (const set& x);
set (const set& x, const allocator_type& alloc); // بدءًا من C++ 11

وظيفة بناء الحركة

set (set&& x);
set (set&& x, const allocator_type& alloc); // بدءًا من C++ 11

وظيفة بناء القائمة التوليد

set (initializer_list<value_type> il,
     const key_compare& comp = key_compare(),
     const allocator_type& alloc = allocator_type()); // بدءًا من C++ 11

المواصفات

comp: عنصر وظيفة مقارنة يستقبلان جزءين رئيسيين، إذا كان الجزء الأول قبل الجزء الثاني، يعود صحيح، وإلا يعود خطأ. بالافتراض، يستخدم less <key_type> شرط.

alloc: عنصر توزيع لكل تخصيص ذاكرة في هذا الماكرو.

first: وضع مبدأ التحليل في أول موقف من النطاق.

last: وضع مبدأ التحليل في أخر موقف من نطاق.

x: مجموعة الأهداف من نفس النوع.

il:عنصر قائمة التوليد لمجموعة الأهداف، سيتم نسخ العناصر منه.

القيمة المعدة للإرجاع

وظيفة الماكرو لا تعود أي قيمة.

پیچیدگی

برای سازنده خالی و سازنده حرکت، پیچیدگی ثابت خواهد بود.

برای تمام موارد دیگر، اگر عناصر مرتب شده باشند، پیچیدگی فاصله بین اشاره‌گرها خطی خواهد بود.

اعتبارسنجی اشاره‌گر

اگر عناصر جعبه‌های مجموعه set در سازنده حرکت منتقل شوند، تمام اشاره‌گرها، ابرنویس‌ها و ارجاع‌های مرتبط با x بی‌اثر خواهند شد.

دعوی داده

دسترسی به تمام عناصر کپی شده.

امنیت استثنا

در صورت بروز استثنا، هیچ اثری ندارد.

مثال 1

دعونا مثال ساده‌ای از سازنده پیش‌فرض را ببینیم:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   // سازنده پیش‌فرض
   set<char> s;
  
   int size = s.size(); 
   cout << "حجم مجموعه s برابر با: " << size;
   عدد 0;
}

الإخراج:

حجم مجموعه s برابر با: 0

در مثال بالا، s یک مجموعه خالی است، بنابراین اندازه آن برابر با 0 است.

مثال 2

دعونا مثال ساده‌ای از سازنده دامنه را ببینیم:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   int evens[] = {2,4,6,8,10};
  
   // سازنده دامنه
   set<int> myset(evens, evens+5);  
   cout << "حجم جعبه‌های مجموعه myset برابر با: " << myset.size();
   عدد 0;
}

الإخراج:

حجم جعبه‌های مجموعه myset برابر با: 5

در مثال بالا، مجموعه myset از عناصر even تشکیل شده است.

مثال 3

دعونا مثال ساده‌ای از سازنده کپی را ببینیم:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   // سازنده پیش‌فرض
   std::set<int> s1;
   s1.insert(5);
   s1.insert(10);
   cout << "حجم جعبه‌های مجموعه s1 برابر با: " << s1.size();
  
   // سازنده کپی
   set<int> s2(s1);
   cout << "\nحجم جعبه‌های مجموعه جدید s2 برابر با: " << s2.size();
   عدد 0;
}

الإخراج:

حجم جعبه‌های مجموعه s1 برابر با: 2
حجم جعبه‌های مجموعه جدید s2 برابر با: 2

در مثال بالا، s2 یک کپی از مجموعه s1 است.

مثال 4

دعونا مثال ساده‌ای از سازنده حرکت را ببینیم:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   // سازنده پیش‌فرض
   set<char> s1;
   s1.insert('x');
   s1.insert('y');
   cout << "حجم جعبه‌های مجموعه s1 برابر با: " << s1.size();
   // سازنده حرکت
   set<char> s2(move(s1));
   cout << "\nحجم جعبه‌های مجموعه جدید s2 برابر با: " << s2.size();
   عدد 0;
}

الإخراج:

حجم جعبه‌های مجموعه s1 برابر با: 2
حجم جعبه‌های مجموعه جدید s2 برابر با: 2

در مثال بالا، محتوای s1 به set s2 منتقل شده است.

مثال 5

دعونا مثال ساده‌ای از سازنده لیست‌های اولیه را ببینیم:

#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
   // بناءً على قائمة التهيئة
   set<string> fruit {
      "orange", "apple", "mango", "peach", "grape"
   };
   cout << "حجم fruit في المحulator هو: " << fruit.size();
   عدد 0;
}

الإخراج:

حجم fruit في المحulator هو: 5

النموذج أعلاه يخلق مجموعة من النصوص باستخدام initializer_list.

STL Set (الجمع) في C++