函数模板
<deque>

std::swap (deque)

template <class T, class Alloc>  void swap (deque<T,Alloc>& x, deque<T,Alloc>& y);
交换两个 deque 容器的内容
容器 x 的内容与 y 的内容进行交换。两个容器对象必须是相同的类型(具有相同的模板参数),尽管它们的大小可能不同。

调用此成员函数后,x 中的元素将是调用前 y 中的元素,而 y 中的元素将是调用前 x 中的元素。所有迭代器、引用和指针对于交换后的对象仍然有效。

这是泛型算法 swap 的一个重载,它通过相互转移它们资产的所有权来提高其性能(即,容器交换它们数据的引用,而无需实际进行任何元素复制或移动):它的行为相当于x.swap(y)被调用。

参数

x,y
相同类型的 deque 容器(即,具有相同的模板参数,TAlloc).

返回值



示例

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 (deque overload)
#include <iostream>
#include <deque>

main ()
{
  unsigned int i;
  std::deque<int> foo (3,100);   // three ints with a value of 100
  std::deque<int> bar (5,200);   // five ints with a value of 200

  swap(foo,bar);

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

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

  return 0;
}

输出
foo contains: 200 200 200 200 200 
bar contains: 100 100 100 


复杂度

常量。

迭代器有效性

指向两个容器中元素的的所有迭代器、指针和引用仍然有效,并且现在指向调用之前它们所指向的相同元素,但在另一个容器中,它们现在可以进行迭代。
请注意,结束迭代器 不指向元素,可能会失效。

数据竞争

容器 xy 都将被修改。

异常安全

如果两个分配器相等,或者它们的 分配器特性 表明分配器应该 传播,则该函数永远不会抛出异常(无异常保证)。
否则,将导致未定义行为

另见