公共成员函数
<unordered_map>

std::unordered_map::swap

void swap ( unordered_map& ump );
交换内容
交换容器的内容与 ump 的内容,ump 是另一个具有相同类型元素的 unordered_map 对象。大小可能不同。

在调用此成员函数后,此容器中的元素将是调用前 ump 中的元素,而 ump 中的元素将是this中的元素。容器内部保持的其他对象(例如其hasherkey_equal对象)也会被交换。

此函数在不实际复制或移动单个元素的情况下,交换容器之间的内部数据指针,从而允许以恒定的时间执行,而不考虑大小。

请注意,存在一个同名的全局算法函数 swap。此全局函数已为 unordered_map 类型的参数进行了重载,使其具有与此成员函数相同的行为和复杂性。

参数

ump
与此对象类型相同的另一个 unordered_map 容器对象。

返回值



示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// unordered_map::swap
#include <iostream>
#include <string>
#include <unordered_map>

int main ()
{
  std::unordered_map<std::string,std::string>
     first = {{"Star Wars","G. Lucas"},{"Alien","R. Scott"},{"Terminator","J. Cameron"}},
     second  = {{"Inception","C. Nolan"},{"Donnie Darko","R. Kelly"}};

  first.swap(second);

  std::cout << "first: ";
  for (auto& x: first) std::cout << x.first << " (" << x.second << "), ";
  std::cout << std::endl;

  std::cout << "second: ";
  for (auto& x: second) std::cout << x.first << " (" << x.second << "), ";
  std::cout << std::endl;

  return 0;
}

可能的输出
first: Inception (C. Nolan), Donnie Darko (R. Kelly),
second: Alien (R. Scott), Terminator (J. Cameron), Star Wars (G. Lucas),


复杂度

常量。

迭代器有效性

所有迭代器、指针和引用都保持有效,但现在它们指向其他容器中的元素,并在其中进行迭代。

另见