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

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

تحكم في عملية C++

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

مجموعات C++ ومسلسلات

مبادئ توجيهية C++

فئات C++ وكيانات

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

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

تعليمية C++ STL

دليل C++

استخدام C++ set swap() ومثال

Set (الجمع) الخاص بـ C++ STL

C++ swap()الوظيفة تستخدم لتبادل محتويات مجموعتين (أو استبدالها)، ولكن يجب أن تكون مجموعتين من نفس النوع.النوعيجبالمثلبالرغم من أن الحجم قد يختلف.

النحو

void swap(set& x);

الم参数

xالمجموعة التي يتم تبادل محتوياتها.

الرجوع

لا يوجد

معقد

ثابت

صلاحية الم迭代ر

كل المراجع، الم迭代رات، والمراجع إلى العناصر في المصدرين تظل سارية، ولكن الآن يتم مراجعة العناصر في المصدر الآخر وتنفيذ العمليات عليها.

التداخل في البيانات

المحتويات والمكونات خارجية تم تعديلها.

الأمان من الاستثناء

إذا تم رمي الاستثناء، فإنها لن تؤثر على المصدر.

النموذج 1

لننظر في مثال بسيط لتبادل عناصر مجموعة واحدة إلى أخرى:

#include 		 <iostream>
#include 		 <set>
using 		 namespace 		 std;
int main(void) {
   set<int> m1 = {1, 2, 3, 4, 5};
   set<int> m2;
   m2.swap(m1);
   cout << "المجموعة تحتوي على العناصر التالية" << endl;
   for (auto it = m2.begin(); it != m2.end(); ++it)
      cout << *it << endl;
   return 		 0;
}

الناتج:

المجموعة تحتوي على العناصر التالية
1
2
3
4
5

في المثال السابق، المجموعة m1 تحتوي على خمس عناصر، بينما m2 فارغة. عند تبادل m1 مع m2، فإن جميع عناصر m1 سيتم تبادلها مع m2.

النموذج 2

لننظر في مثال بسيط لتبادل محتويات مجموعتين:

#include 		 <iostream>
#include 		 <set>
using 		 namespace 		 std;
 int main() {
   int myints[] = {10, 20, 30, 40, 50, 60};
   set<int> first(myints, myints+3);
   set<int> second(myints+3, myints+6);  
   first.swap(second);
   cout << "المجموعة الأولى تحتوي على:";
   للـ(set<int>::iterator it = first.begin(); it != first.end(); ++it)
      cout 		 << 		 ' 		 ' 		 << 		 *it;
   cout 		 << 		 '\n';
   cout 		 << 		 "دومین مجموعه شامل:";
   for 		 (set<int>::iterator 		 it 		 = 		 second.begin(); 		 it 		 != 		 second.end(); 		 ++it)
      cout 		 << 		 ' 		 ' 		 << 		 *it;
   cout 		 << 		 '\n';
   return 		 0;
}

الناتج:

اولین مجموعه شامل: 40 50 60 است
دومین مجموعه شامل: 10 20 30 است

مثال 3

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

#include<iostream>
#include<set>
using 		 namespace 		 std;
 
int 		 main()
{
    // 		 انتخاب دو مجموعه از هر دو
    set 		 <char> 		 set1, 		 set2;
    
    set1 		 = 		 {'a','b','c','d'}; 
    set2 		 = 		 {'x','y','z'};
 
    // 		 تبادل عناصر مجموعه
    swap(set1, 		 set2);
 
    // 		 چاپ عناصر مجموعه
    cout 		 << 		 "set1:\n";
    for 		 (auto 		 it 		 = 		 set1.begin(); 		 it 		 != 		 set1.end(); 		 it++)
        cout 		 << 		 "\t" 		 << 		 *it 		 << 		 '\n';
 
    cout 		 << 		 "set2:\n";
    for 		 (auto 		 it 		 = 		 set2.begin(); 		 it 		 != 		 set2.end(); 		 it++)
        cout 		 << 		 "\t" 		 << 		 *it 		 << 		 '\n';
 
    return 		 0;
}

الناتج:

set1:
	x
	y
	z
set2:
	a
	b
	c
	d

در مثال بالا، نسخه دیگری از swap() برای تبادل محتوای دو مجموعه استفاده شده است.

مثال 4

بگذارید یک مثال ساده‌ای را بررسی کنیم:

#include 		 <set>  
#include 		 <iostream>  
  
int 		 main( 		 )  
{  
   using 		 namespace 		 std;  
   set 		 <int> 		 s1, 		 s2, 		 s3;  
   set 		 <int> 		 s1_Iter;  
  
   s1.insert( 		 10 		 );  
   s1.insert( 		 20 		 );  
   s1.insert( 		 30 		 );  
   s2.insert( 		 100 		 );  
   s2.insert( 		 200 		 );  
   s3.insert( 		 300 		 );  
  
   cout 		 << 		 "مجموعه اولیه s1 به شرح زیر است:";  
   for (s1_Iter = s1.begin(); s1_Iter != s1.end(); s1_Iter++)  
      cout << ' ' << *s1_Iter;  
   cout << '.' << endl;  
  
   // 		 این نسخه عضو swap است
   s1.swap( 		 s2 		 );  
  
   cout 		 << 		 "بعد از تبادل با s2، لیست s1 به شرح زیر است:";  
   for (s1_Iter = s1.begin(); s1_Iter != s1.end(); s1_Iter++)  
      cout << ' ' << *s1_Iter;  
   cout 		 << 		 "." 		 << 		 endl;  
  
   // هذا هو نموذج swap المخصص
   swap(s1, s3);  
  
   cout << 'بعد تبادل s3، القائمة s1 هي:";  
   for (s1_Iter = s1.begin(); s1_Iter != s1.end(); s1_Iter++)  
      cout << ' ' << *s1_Iter;  
   cout << '.' << endl;  
}

الناتج:

الجمعية الأصلية s1 هي: 10 20 30.
بعد تبادل s2، القائمة s1 تصبح: 100 200.
بعد تبادل s3، القائمة s1 هي: 300.

Set (الجمع) الخاص بـ C++ STL