其他分享
首页 > 其他分享> > 当我初始化一个C容器(如std :: list)时,复制构造函数是否被调用?

当我初始化一个C容器(如std :: list)时,复制构造函数是否被调用?

作者:互联网

当我初始化STL容器时,例如列表<矢量<炭&GT &GT使用例如my_list.push_back(vector< char>(5000,’T’))是在构建后复制的吗?或者编译器是否调用list<中的构造函数?矢量<炭&GT &GT本身?

解决方法:

在C 03中,push_back被定义为void push_back(const T& x);.这意味着您正在构建一个向量,并且对此类时间的const引用正在传递给列表.然后列表在内部调用复制构造函数以存储此类元素的副本.

在C 11中,void push_back(T& x)有一个额外的定义;对你的时间向量进行右值引用,并导致在内部调用移动构造函数来初始化列表所持有的副本.

标签:move-constructor,c,copy-constructor
来源: https://codeday.me/bug/20190729/1576584.html