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

std::

multimap::swap

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

交换容器

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

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

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

☲  参数


x
另一个与此相同类型的容器(即,具有相同的模板参数,Key, T, CompareAlloc),其内容与此容器交换。

☉  返回值



none

☣  示例



// swap multimaps
#include <iostream>
#include <map>

int main ()
{
  std::multimap<char,int> foo,bar;

  foo.insert(std::make_pair('x',100));
  foo.insert(std::make_pair('y',200));

  bar.insert(std::make_pair('a',11));
  bar.insert(std::make_pair('b',22));
  bar.insert(std::make_pair('a',55));

  foo.swap(bar);

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

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

  return 0;
}

输出:
foo contains:
a => 11
a => 55
b => 22
bar contains:
x => 100
y => 200

✥ 复杂度



常量

☣ 迭代器的有效性



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

⇄ 数据竞争


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

☂ 异常安全性



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

🍄  另请参阅



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

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