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

std::

multimap::operator=

公众成员函数  <multimap>
C++98 copy (1)
multimap& operator= (const multimap& x);

复制容器的内容

将新内容分配给容器,替换其当前内容。


C++98:
将x中的所有元素复制到容器中,并相应地改变其大小.
容器保留其当前的分配器,该分配器用于在需要时分配额外的存储空间。

在调用之前保存在容器中的任何元素要么被赋值,要么被销毁。

☲  参数


x
一个相同类型的multimap对象(即,具有相同的模板参数,key, T, CompareAlloc)。
il
一个初始化列表对象。编译器将自动从初始化列表声明符构造此类对象。
成员类型value_type是容器中元素的类型,在multimap中定义为<const key_type, multimapped_type>的别名 (参见multimap成员类型)。

☉  返回值



*this

☣  示例



// assignment operator with multimaps
#include <iostream>
#include <map>

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

  foo.insert(std::make_pair('x',32));
  foo.insert(std::make_pair('y',64));
  foo.insert(std::make_pair('y',96));
  foo.insert(std::make_pair('z',128));

  bar = foo;                  // bar now contains 4 ints
  foo.clear();                // and first is now empty

  std::cout << "Size of foo: " << foo.size() << '\n';
  std::cout << "Size of bar: " << bar.size() << '\n';
  return 0;
}

输出:
Size of first: 0
Size of bar: 4

✥ 复杂度



对于复制赋值(1):线性大小(销毁,复制)。
对于移动赋值(2):与当前容器大小(销毁)成线性。*
对于初始化器列表赋值(3):对于size最大为对数(销毁,移动赋值)——如果il已经排序,则为线性。。

*如果分配器没有propagate,则会增加分配的复杂性。

☣ 迭代器的有效性



与此容器相关的所有迭代器、引用和指针都会失效。
在移动赋值操作中,指向x中元素的迭代器、指针和引用也会失效。

⇄ 数据竞争


访问所有复制的元素。
move赋值(2)修改x。
容器及其所有元素都被修改。

☂ 异常安全性



基本保证:如果抛出异常,则容器处于有效状态。
如果allocator_traits::construct不支持元素构造的适当参数, 或者value_type不是copy assignable(或move assignable for(2)),它将导致未定义的行为。

🍄  另请参阅



multimap::multimap 构建multimap对象(公众成员函数)
multimap::insert 插入元素(公众成员函数)
multimap::find 访问元素(公众成员函数)

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