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

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

C++ 流程控制

وظيفة في C++

C++ 数组 & 字符串

C++ 数据结构

C++ 类 & 对象

المؤشرات في C++

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

تعليمية STL C++

دليل C++

دليل C++ swap()

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

دليل C++ std swap() طريقة الاستخدام ومثال C ++ stdswap (set)هي فيالمجموعةمنغير الع quarters

هذا يستخدم لتبادل (أو استبدال) محتويات مجموعتين (أي x و y)، ولكن يجب أن يكون نوع الكتلتين نفسه، يمكن أن تكون حجم الكتلتين مختلفين.

النحو
  template <class T, class Compare, class Alloc>

void swap (set<T,Compare,Alloc>& x, set<T,Compare,Alloc>& y);

المعامل: كائن من المجموعة الأولي.

y: نفس النوع الثاني من الكائن.

الناتج

لا

معقد

غير تغيير

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

يرجى ملاحظة أن جميع م迭代رات الاشارة إلى العناصر في الكتلين، والاشارات والنقاط، تبقى سارية.

يرجى ملاحظة أن م迭代ر النهاية لا يشارك العنصر ويجب أن يكون غير صالح.

التنافس على البيانات

المعطيات x و y تم تعديلها.

النداء لا يحتوي على أي عناصر مضمونة.

الأمان من الناحية الاستثنائية

هذه الوظيفة لن تسبب استثناءً.

مثال1

دعونا نرى مثالاً بسيطاً يبادل مجموعة العناصر بمجموعة أخرى:

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

الإخراج:

المجموعة تحتوي على العناصر التالية
a
b
c
d

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

مثال2

让我们看一个简单的示例来交换两个集合的内容:

#include <iostream>
#include <set>
using namespace std;
int main ()
{
  set<int> set1,set2;
  set1= {100,200};
  set2 = {110, 220, 330};
  swap(set1,set2);
  cout << "set1 包含:\n";
  for (set<int>::iterator it=set1.begin(); it!=set1.end(); ++it)
    cout << *it<< '\n';
  cout << "set2 包含:\n";
  for (set<int>::iterator it=set2.begin(); it!=set2.end(); ++it)
    cout << *it<< '\n';
  return 0;
}

الإخراج:

set1 包含:
110
220
330
set2 contains:
100
200

在上面的示例中,两个集合(即set1和set2)的内容相互交换。

实例3

让我们看一个简单的示例来交换两个集合的内容:

#include <iostream>
#include <set>
using namespace std;
 int main ()
{
  int myints[]={12,75,10,32,20,25};
  set<int> first (myints,myints+3); // 10,12,75
  set<int> second (myints+3,myints+6); // 20,25,32
  swap(first,second);
  cout << "first contains:";
  for (set<int>::iterator it=first.begin(); it!=first.end(); ++it)
    cout << ' ' << *it;
  cout << '\n';
  cout << "second contains:";
  for (set<int>::iterator it=second.begin(); it!=second.end(); ++it)
    cout << ' ' << *it;
  cout << '\n';
  return 0;
}

الإخراج:

first contains: 20 25 32
second contains: 10 12 75

实例4

让我们看一个简单的实例:

#include <iostream>
#include <string>
#include <set>
using namespace std;
void show(const char *msg, set<int> mp);
int main() {
  set<int> m1, m2;
  m1.insert(100);
  m1.insert(300);
  m1.insert(200);
  // 交换m1和m2的内容。
  cout << "交换m1和m2的内容。\n";
  swap(m1,m2);
  show("m2内容: ", m2);
  show("m1内容: ", m1);
 // Clear m1.
  m1.clear();
  if(m1.empty()) cout << "m1 is now empty.";
  return 0;
}
// 通过使用迭代器显示set<string, int>的内容。
void show(const char *msg, set<int> mp) {
  set<int>::iterator itr;
  cout << msg << endl;
  for(itr=mp.begin(); itr != mp.end(); ++itr)
    cout << " " << *itr << endl;
  cout << endl;
}

الإخراج:

تبديل محتوى m1 وم2.
محتوى m2: 
  100
  200
  300
محتوى m1: 
m1 الآن فارغة.

في الأمثلة أعلاه، محتوى المجموعة m1 تم تبديلها إلى m2، وبعد تبديل m1، تم مسح المجموعة.

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