百科问答小站 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++初学者有必要深挖这样的问题吗? 
  CMake是不是阻碍了C++的发展? 
  有什么很好的软件是用 Qt 编写的? 
  做32位/64位跨版本编程,有什么需要注意的么? 
  Mac 下顺手的 C/C++ 开发 IDE 是哪个? 
  C++可否将父类的对象cast子类,并调用子类的private函数? 
  C++ 的智能指针不就基本解决了野指针问题了吗?为什么还要吹捧rust的内存安全? 
  如何正确通过 C++ Primer 学习 C++? 
  如果有一个按钮按下,世界上所有的c,c++,c#语言代码都无效,我们的生活会发生什么? 
  C++中 int n = 0ULL - 1; 是 UB 未定义行为吗? 

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





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利