C++ Reference: Standard C++ Library reference: Containers: list: list: assign
创始人
2024-03-25 22:23:43
0

C++官网参考链接:https://cplusplus.com/reference/list/list/assign/

公有成员函数

std::list::assign
C++98
范围 (1)    
template  void assign (InputIterator first, InputIterator last);
填充 (2)    
void assign (size_type n, const value_type& val);
C++11
范围 (1)    
template  void assign (InputIterator first, InputIterator last);
填充 (2)    
void assign (size_type n, const value_type& val);
初始化列表 (3)    
void assign (initializer_list il);
为容器分配新内容
将新内容分配给list容器,替换其当前内容并相应地修改其大小。
C++98
在范围版本(1)中,新内容是由first和last范围中的每个元素以相同的顺序构造的元素。
在填充版本(2)中,新内容是n个元素,每个元素初始化为val的一个副本。
所分配元素所需的任何存储都使用内部allocator(internal allocator)进行分配。
调用之前容器中保存的任何元素都将被销毁并替换为新构造的元素(不发生元素赋值)。
C++11
在范围版本(1)中,新内容是由first和last范围中的每个元素以相同的顺序构造的元素。
在填充版本(2)中,新内容是n个元素,每个元素初始化为val的一个副本。
在初始化列表版本(3)中,新内容是作为初始化列表传递的值的副本,顺序相同。
如果存储发生变化,则使用内部allocator(internal allocator)(通过其traits)。它也被用来destroy所有现有的元素,并construct新的元素。
调用之前容器中保存的任何元素都被赋值或销毁。

形参 
first,last
输入iterator到序列的初始和最终位置。使用的范围是[first,last),它包括first和last之间的所有元素,包括由first指向的元素,但不包括由last指向的元素。
函数模板实参InputIterator应该是一个输入iterator(input iterator)类型,它指向可以构造value_type对象的类型元素。
n
容器的新大小。
成员类型size_type是无符号整型。
val
值来填充容器。容器中的n个元素都将初始化为该值的副本。
成员类型value_type是容器中元素的类型,在list中定义为其第一个模板形参(T)的别名。
il 
一个initializer_list对象。编译器将从初始化列表声明器自动构造此类对象。
成员类型value_type是容器中元素的类型,在list中定义为其第一个模板形参(T)的别名。

返回值
没有返回值。

用例
// list::assign
#include
#include

int main ()
{
  std::list first;
  std::list second;

  first.assign (7,100);                      // 7 ints with value 100

  second.assign (first.begin(),first.end()); // a copy of first

  int myints[]={1776,7,4};
  first.assign (myints,myints+3);            // assigning from array

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

复杂度
初始和最终的sizes(析构、构造)中的线性。

iterator的有效性
与此容器相关的所有iterator、reference和指针都无效,结束iterator除外。

数据竞争
所有复制的元素都被访问。
完成容器的修改。
所有包含的元素都被修改。

异常安全
基本保证:如果抛出异常,则容器处于有效状态。
如果元素结构的适当实参不支持allocator_traits::construct,或者由[first,last)指定的范围无效,则会导致未定义的行为。 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...