公有成員函式
<map>

std::multimap::swap

void swap (multimap& x);
交換內容
交換容器的內容與 x 的內容,x 是另一個相同型別的 multimap。大小可能不同。

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

請注意,存在一個同名的非成員函式 swap,它透過最佳化過載了該演算法,該最佳化行為類似於此成員函式。

內部容器的 分配器比較物件 是否被交換是未定義的。
內部容器的 分配器 是否被交換未定義,除非在適當的 分配器特性 明確指示它們應該 傳播 的情況下。

內部 比較物件 總是透過 swap 進行交換。

引數

x
另一個與此容器型別相同的 multimap 容器(即具有相同的模板引數,, 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
25
26
27
// swap multimaps
#include <iostream>
#include <map>

int main ()
{
  std::multimap<char,int> foo,bar;

  foo.insert(std::make_pair('x',100));
  foo.insert(std::make_pair('y',200));

  bar.insert(std::make_pair('a',11));
  bar.insert(std::make_pair('b',22));
  bar.insert(std::make_pair('a',55));

  foo.swap(bar);

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

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

  return 0;
}

輸出
foo contains:
a => 11
a => 55
b => 22
bar contains:
x => 100
y => 200


複雜度

常量。

迭代器有效性

指向兩個容器中元素的的所有迭代器、指標和引用仍然有效,但現在指向另一個容器中的元素,並在其中迭代。
請注意,end 迭代器 不指向元素,並且可能失效。

資料競爭

容器和 x 都被修改。
呼叫不會訪問任何包含的元素(儘管請參見上文的迭代器有效性)。

異常安全

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

另見