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

std::

multiset::swap

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

交换容器

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

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

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

☲  参数


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

☉  返回值



none

☣  示例



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

main ()
{
  int myints[]={19,72,4,36,20,20};
  std::multiset<int> first (myints,myints+3);     // 4,19,72
  std::multiset<int> second (myints+3,myints+6);  // 20,20,36

  first.swap(second);

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

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

  return 0;
}

输出:
first contains: 20 20 36
second contains: 4 19 72

✥ 复杂度



常量

☣ 迭代器的有效性



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

⇄ 数据竞争


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

☂ 异常安全性



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

🍄  另请参阅



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

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