function template
<set>

std::swap (multiset)

template <class T, class Compare, class Alloc>  void swap (multiset<T,Compare,Alloc>& x, multiset<T,Compare,Alloc>& y);
交換兩個multiset的內容
容器x的內容與y的內容進行交換。兩個容器物件必須是相同的型別(相同的模板引數),但大小可以不同。

呼叫此成員函式後,x中的元素將變為呼叫前y中的元素,而y中的元素將變為呼叫前x中的元素。所有迭代器、引用和指標對於交換後的物件仍然有效。

這是通用演算法swap的一個過載,它透過互相轉移其資產給對方容器來提高效能(即,容器交換它們資料的引用,而不實際執行任何元素複製或移動):它表現得好像x.swap(y)被呼叫。

引數

x,y
相同型別的multiset容器(即,具有相同的模板引數,T, CompareAlloc).

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// swap (multiset overload)
#include <iostream>
#include <set>

main ()
{
  int myints[]={12,75,12,35,20,35};
  std::multiset<int> first (myints,myints+3);     // 12,12,75
  std::multiset<int> second (myints+3,myints+6);  // 20,35,35

  swap(first,second);

  std::cout << "first contains:";
  for (std::multiset<int>::iterator it=first.begin(); it!=first.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  std::cout << "second contains:";
  for (std::multiset<int>::iterator it=second.begin(); it!=second.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

輸出
first contains: 20 35 35
second contains: 12 12 75


複雜度

常量。

迭代器有效性

指向兩個容器中元素的的所有迭代器、指標和引用仍然有效,並且現在指向呼叫前它們所指向的相同元素,只是在另一個容器中,它們現在進行迭代。
請注意,end迭代器不指向元素,並且可能會失效。

資料競爭

兩個容器xy都會被修改。
呼叫時不會訪問任何包含的元素(但請參閱上面的迭代器有效性)。

異常安全

如果兩個multiset中的分配器比較相等,或者它們的分配器特性指示分配器應傳播,則該函式永遠不會丟擲異常(無異常保證)。
否則,將導致未定義行為

另見