百科问答小站 logo
百科问答小站 font logo



vector 使用 emplace_back 会调用复制构造函数吗? 第1页

  

user avatar   yao-dong-27 网友的相关建议: 
      

很正常

C3(1,"ss")

是构造了一个main函数栈上的匿名临时变量,这个自然需要一个调用构造函数

然后 push_back的时候,vector需要把这个匿名变量的值复制到vector的存储空间上,由于是值copy,所以必须有一次copy constructor

在C++11里引入了 std::move 可以解决这个问题

参考 关于C++右值及std::move()的疑问? - C++ - 知乎

第二次 Copy Constructor应该是 vector在扩容产生的复制,你可以在开始先把 vector reserve一个较大的值 再试试看




  

相关话题

  想走虚幻引擎c++路线,c++是否应该大量学习算法? 
  C/C++中,设计的时候字符/字符串为什么要加引号? 
  有什么C可以实现但C++不能实现的东西吗? 
  c++ 中明明有vector了为什么还要有stack? 
  C++1y又给C++增加了多少坑? 
  大型c++项目在linux下如何调试? 
  倒序输出字符串c++为啥不行? 
  为什么世界上大多数地方的人习惯用逗号表示小数点,而C++却用圆点表示小数点,而不是按照大多数地方习惯? 
  C++在面向对象编程中,非虚继承和非虚析构函数的存在是为了解决什么问题? 能否都用虚继承和虚析构函数? 
  C++ 语言会不会在十年内退出市场? 

前一个讨论
为什么下面程序递归计算斐波那契数列java比c++要快?
下一个讨论
中国房价涨成这样,为何没有任何经济危机的征兆?





© 2025-05-09 - tinynew.org. All Rights Reserved.
© 2025-05-09 - tinynew.org. 保留所有权利