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

std::

unordered_multimap::operator=

公众成员函数  <unordered_map>
copy (1)
unordered_multimap& operator= (const unordered_multimap& ump);
move (2)
unordered_multimap& operator= (unordered_multimap&& ump);
initializer list (3)
unordered_multimap& operator= (initializer_list<value_type> il);

分配容器的内容

指定ump(或il)作为容器的新内容。

销毁调用前对象中包含的元素,并替换为unordered_multimap umpinitializer list il中的元素(如果有的话)。

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

第一个版本(1)执行复制赋值,将ump的所有元素复制到容器对象中(ump保留其内容)。

第二个版本(2)执行移动赋值,将ump内容的所有权转移到对象。没有副本产生:内容被ump丢失。

第三个版本(3)将初始化列表il的内容赋值为容器对象的元素。

☲  参数


ump
同一类型的unordered_multimap对象(即具有相同模板形参)
il
一个初始化列表对象。编译器将自动从初始化列表声明符构造此类对象。
成员类型value_type是容器中元素的类型,它是pair<const key_type,mapped_type>, 其中成员类型key_type是第一个模板参数(键类型))的别名,而mapped_type是第二个模板参数(映射类型,T)的别名。

☉  返回值



*this

☣  示例



// unordered_multimap::operator=
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;

typedef std::unordered_multimap<std::string,std::string> stringmap;

stringmap merge (stringmap a,stringmap b) {
  stringmap temp(a); temp.insert(b.begin(),b.end()); return temp;
}

int main ()
{
  stringmap first, second, third;
  first = {{"apple","red"},{"lemon","yellow"}};     // init list
  second = {{"banana","yellow"},{"apple","green"}}; // init list
  third = merge(first,second);                      // move
  first = third;                                    // copy

  std::cout << "first contains:";
  for (auto& elem: first) std::cout << " " << elem.first << ":" << elem.second;
  std::cout << std::endl;

  return 0;
}

可能输出:
first contains: lemon:yellow apple:red apple:green banana:yellow

✥ 复杂度



对于复制赋值(1):线性大小(销毁,复制)。
对于move赋值(2):在当前容器大小中线性(销毁)。*
对于初始化器列表赋值(3):一般来说,大小是线性的(销毁,移动赋值)—--—最坏情况是二次方。

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

☣ 迭代器的有效性



在调用之前,容器中所有的迭代器、引用和指向元素的指针都将失效。

🍄  另请参阅



unordered_multimap::unordered_multimap 构建unordered_multimap对象(公众成员函数)
unordered_multimap::emplace 构造和插入元素(公众成员函数)

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