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

std::

list::operator=

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

分配内容

将新内容分配给容器,替换其当前内容,并相应地修改其大小。


C++98:
将x中的所有元素复制到容器中.
容器保留它的当前分配器,如果需要,它用于分配额外的存储空间。

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

☲  参数


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

☉  返回值



*this

☣  示例



// assignment operator with lists
#include <iostream>
#include <list>

int main ()
{
  std::list<int> first (3);      // list of 3 zero-initialized ints
  std::list<int> second (5);     // list of 5 zero-initialized ints

  second = first;
  first = std::list<int>();

  std::cout << "Size of first: " << int (first.size()) << '\n';
  std::cout << "Size of second: " << int (second.size()) << '\n';
  return 0;
}

两个包含int元素的list容器都被初始化为不同大小的序列。
然后,second被赋值给first,所以现在两者相等并且大小为3。
最后,first被赋值给一个新构造的空容器对象,所以它的大小最后是0。
输出:
Size of first: 0
Size of second: 3

✥ 复杂度



元素的数量是线性的。

☣ 迭代器的有效性



除了结束迭代器外,与此容器相关的所有迭代器、引用和指针都会失效。
在move赋值操作中,指向fwdlst中元素的迭代器、指针和引用也会失效。

⇄ 数据竞争


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

☂ 异常安全性



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

🍄  另请参阅



list::list 构建list对象(公众成员函数)
list::assign 分配内容(公众成员函数)

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