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

std::

set::swap

公众成员函数  <set>
void swap (set& x);

交换容器

用x的内容交换容器的内容,x是另一个相同类型的集合。大小可能不同。

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

请注意,存在一个名称相同的非成员函数,swap,重载该算法,其优化行为与此成员函数类似。
C++98
内部容器分配器和比较对象是否交换是未定义的。
C++11
内部容器分配器是否被交换没有定义,除非在相应的分配器特征显式地指示它们应该传递的情况下。
内部比较对象总是使用swap进行交换。

☲  参数


x
另一个与this类型相同的集合容器(例如,具有相同的模板参数,T和Alloc), 其内容与该容器的内容交换。

☉  返回值



none

☣  示例



// swap sets
#include <iostream>
#include <set>

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

  first.swap(second);

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

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

  return 0;
}

输出:
first contains: 20 25 32
second contains: 10 12 75

✥ 复杂度



常量

☣ 迭代器的有效性



所有指向两个容器中元素的迭代器、指针和引用仍然有效,但现在它们指向另一个容器中的元素,并在其中迭代.
注意,结束迭代器不指向元素,可能会失效。

⇄ 数据竞争


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

☂ 异常安全性



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

🍄  另请参阅



swap (set) 交换两个集合的内容(函数模板)
swap_ranges 交换两个范围的值(函数模板)

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