93 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Set
 | |
| localeTitle: جلس
 | |
| ---
 | |
| يتم تعريف بنية مجموعة البيانات في c ++ بنفس الطريقة التي يتم تحديدها في سياق الرياضيات.
 | |
| 
 | |
| بشكل أكثر رسمية ، المجموعات هي نوع من الحاويات الترابطية التي يجب أن يكون كل عنصر فيها فريدًا.
 | |
| 
 | |
| *   لا يمكن تعديل قيمة العنصر بمجرد إدخاله ، على الرغم من أن حذف عنصر وإدخال عنصر جديد مسموح به ، بنفس الطريقة التي نقوم بها في الرياضيات.
 | |
| *   يمكن استخدام هيكل مجموعة البيانات للنموذج ، جيدًا ، يحدد نفسه. يصبح من السهل العثور على التقاطعات والنقابات وما إلى ذلك.
 | |
| *   مشابه للمتجه ، ولكن يتم السماح فقط بالقيم الفريدة.
 | |
| *   تقوم المجموعة بترتيب العناصر بترتيب متزايد عندما تقوم بإدراج عناصر في المجموعة.
 | |
| 
 | |
| يتم تعيين ملف الرأس المطلوب لاستخدام بنية البيانات المحددة. أي ، يجب `#include<set>` في التعليمات البرمجية الخاصة بك لكي تتمكن من استخدام بنية البيانات المحددة.
 | |
| 
 | |
| **نصيحة للمحترفين** : - استخدم `#include<bits/stdc++.h>` لتضمين جميع هياكل وبيانات C ++ بدلاً من إضافتها واحدة تلو الأخرى.  
 | |
| بعض الوظائف التي يمكن القيام بها مع مجموعة: -
 | |
| 
 | |
| 1.  start () - إرجاع مكرر إلى العنصر الأول في المجموعة
 | |
| 2.  end () - إرجاع مكرر إلى العنصر النظري الذي يتبع العنصر الأخير في المجموعة
 | |
| 3.  size () - لعرض عدد العناصر في المجموعة
 | |
| 4.  max\_size () - لعرض الحد الأقصى لعدد العناصر التي يمكن أن تحتويها المجموعة
 | |
| 5.  empty () - إرجاع ما إذا كانت المجموعة فارغة
 | |
| 6.  محو (const g) - يزيل القيمة "g" من المجموعة
 | |
| 7.  clear () - يزيل كل العناصر من المجموعة
 | |
| 
 | |
| دعونا ننظر على سبيل المثال :-
 | |
| 
 | |
|  `#include <iostream> 
 | |
|  #include <set> 
 | |
|  #include <iterator> 
 | |
|  
 | |
|  using namespace std; 
 | |
|  int main() 
 | |
|  { 
 | |
|     set <int> myset;   //an empty set container. Note that size of the set need not be declared, similar to vector. 
 | |
|  
 | |
|     // insert elements in random order 
 | |
|     myset.insert(65); 
 | |
|     myset.insert(30); 
 | |
|     myset.insert(80); 
 | |
|     myset.insert(20); 
 | |
|     myset.insert(9); 
 | |
|     myset.insert(9); // only one 9 will be added to the list. 
 | |
|  
 | |
|  
 | |
|     // printing set myset 
 | |
|     set <int> :: iterator itr; //an iterator is like a pointer. 
 | |
|     cout << "\nThe contents of myset : "; 
 | |
|     for (itr = myset.begin(); itr != myset.end(); ++itr) 
 | |
|     { 
 | |
|         cout << '\t' << *itr; 
 | |
|     } 
 | |
|     cout << endl; 
 | |
|  
 | |
|  
 | |
|     // remove all elements up to 65 in myset from the beginning:- 
 | |
|     cout << "\nContents of myset after removal of elements less than 30 : "; 
 | |
|     myset.erase(myset.begin(), myset.find(30)); 
 | |
|     for (itr = myset.begin(); itr != myset.end(); ++itr) 
 | |
|     { 
 | |
|         cout << '\t' << *itr; 
 | |
|     } 
 | |
|  
 | |
|     // remove element with value 50 in myset 
 | |
|  
 | |
|     int num = myset.erase(80); //returns true (and deletes) if 80 is there in the list else returns 0. 
 | |
|     cout<<"\n\n After doing myset.erase(80), "<<num<<" element is removed\n\n"; 
 | |
|     cout<<"Contents of the modified set:\t"; 
 | |
|     for (itr = myset.begin(); itr != myset.end(); ++itr) 
 | |
|     { 
 | |
|         cout << '\t' << *itr; 
 | |
|     } 
 | |
|  
 | |
|     cout << endl; 
 | |
|  
 | |
|  
 | |
|     return 0; 
 | |
|  
 | |
|  } 
 | |
| ` 
 | |
| 
 | |
| \`\` \`حزب الشعب الكمبودي انتاج:- محتويات myset: 9 20 30 65 80
 | |
| 
 | |
| محتويات myset بعد إزالة العناصر أقل من 30: 30 65 80
 | |
| 
 | |
| بعد القيام بـ myset.erase (80) ، تتم إزالة عنصر واحد
 | |
| 
 | |
| محتويات المجموعة المعدلة: 30 65 \`\` \`
 | |
| 
 | |
| \### المصادر
 | |
| 
 | |
| 1.  [المهوسون المهوسون](https://www.geeksforgeeks.org/set-in-cpp-stl/) |