English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C++ swap()الوظيفة تستخدم لتبادل محتويات مجموعتين (أو استبدالها)، ولكن يجب أن تكون مجموعتين من نفس النوع.النوعيجبالمثلبالرغم من أن الحجم قد يختلف.
void swap(set& x);
xالمجموعة التي يتم تبادل محتوياتها.
لا يوجد
ثابت
كل المراجع، الم迭代رات، والمراجع إلى العناصر في المصدرين تظل سارية، ولكن الآن يتم مراجعة العناصر في المصدر الآخر وتنفيذ العمليات عليها.
المحتويات والمكونات خارجية تم تعديلها.
إذا تم رمي الاستثناء، فإنها لن تؤثر على المصدر.
لننظر في مثال بسيط لتبادل عناصر مجموعة واحدة إلى أخرى:
#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.
لننظر في مثال بسيط لتبادل محتويات مجموعتين:
#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 است
بگذارید یک مثال سادهای برای تبادل محتوای دو مجموعه را بررسی کنیم:
#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() برای تبادل محتوای دو مجموعه استفاده شده است.
بگذارید یک مثال سادهای را بررسی کنیم:
#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.