std::
multimap::swap
公众成员函数 <map>
交换容器
用
x的内容交换容器的内容,
x是另一个相同类型的multimap。大小可能不同。
在调用这个成员函数之后,这个容器中的元素是调用之前在
x中的元素,
而
x中的元素是在这个容器中的元素。对于交换的对象,所有迭代器、引用和指针都是有效的。
请注意,存在一个名称相同的非成员函数,
swap,重载该算法,其优化行为与此成员函数类似。
-
C++98
-
内部容器分配器和比较对象是否交换是未定义的。
-
C++11
-
内部容器分配器是否被交换没有定义,除非在相应的分配器特征显式地指示它们应该传递的情况下。
内部比较对象总是使用swap进行交换。
☲ 参数
-
x
-
另一个与此相同类型的容器(即,具有相同的模板参数,Key, T, Compare和Alloc),其内容与此容器交换。
☉ 返回值
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 |
交换两个范围的值(函数模板) |