Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

deque::swap

公众成员函数  <deque>
void swap (deque& x);
交换内容
用x的内容交换容器的内容,x是另一个包含相同类型元素的deque对象。大小可能不同。

在调用这个成员函数之后,这个容器中的元素就是调用之前在x中的元素,而x中的元素就是在this中的元素。 对于交换的对象,所有迭代器、引用和指针仍然有效。

注意,存在一个同名的非成员函数,swap,重载该算法,并使用与此成员函数类似的优化行为。

C++98: 没有关于分配器的细节。

☲  参数


x
另一个相同类型的deque容器(即,用相同的模板参数实例化,T和Alloc), 其内容与该容器交换。

☉  返回值



none

☣  示例



// swap deques
#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

  foo.swap(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

✥ 复杂度



常量

☣ 迭代器的有效性



所有指向这两个容器中元素的迭代器、指针和引用仍然有效, 它们现在指向的是它们在调用前引用的相同元素,但它们现在在另一个容器中迭代。
注意,end迭代器不指向元素,可能会失效。

⇄ 数据竞争


容器和x都被修改了。
调用不会访问所包含的元素(请参阅上面的迭代器有效性)。

☂ 异常安全性



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

🍄  另请参阅



swap (deque) 交换两个deque容器的内容(函数模板)
swap_ranges 交换两个范围的值(函数模板)

联系我们 免责声明 关于CandCplus 网站地图