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

C++ std swap() 사용법 및 예제

C++ STL Set(집합)

C ++ std swap(set)C ++중set비 멤버 함수。이는 두 개의 집합(즉 x와 y)의 내용을 교환(또는 대체)하는 데 사용되며, 두 집합의 유형은 동일해야 하지만 크기는 다를 수 있습니다.

문법

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

매개변수

x:첫 번째 set 집합의 객체.

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다섯 개의 요소를 가지고 있으면2공백입니다. 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 包含:
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 包含:";
  for (set<int>::iterator it=first.begin(); it!=first.end(); ++it)
    cout << ' ' << *it;
  cout << '\n';
  cout << "second 包含:";
  for (set<int>::iterator it=second.begin(); it!=second.end(); ++it)
    cout << ' ' << *it;
  cout << '\n';
  return 0;
}

출력:

first 包含: 20 25 32
second 包含: 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과 m2의 내용.
m2내용: 
  100
  200
  300
m1내용: 
m1 is now empty.

위의 예제에서, 집합 m1의 내용이 집합 m으로 교환되었습니다.2그리고 m1그 후, 집합이 지워졌습니다.

C++ STL Set(집합)