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

std::

unordered_multiset::operator=

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

分配容器的内容

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

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

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

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

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

☲  参数


ums
同一类型的unordered_multiset对象(即具有相同模板形参)
il
一个初始化列表对象。编译器将自动从初始化列表声明符构造此类对象。
成员类型value_type是容器中元素的类型,在 unordered_multiset 中定义为其第一个模板形参(Key)的别名。

☉  返回值



*this

☣  示例



// unordered_multiset::operator=
#include <iostream>
#include <string>
#include <unordered_set>

template<class T>
T cmerge (T a, T b) {
  T t(a); t.insert(b.begin(),b.end()); return t;
}

int main ()
{
  std::unordered_multiset<std::string> first, second, third;
  first = {"red","green","blue"};      // init list
  second = {"red","yellow","blue"};    // init list
  third = cmerge (first, second);      // move
  first = third;                       // copy

  std::cout << "first contains:";
  for (const std::string& x: first) std::cout << " " << x;
  std::cout << std::endl;

  return 0;
}

可能输出:
first contains: blue blue red red yellow green

✥ 复杂度



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

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

☣ 迭代器的有效性



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

🍄  另请参阅



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

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