百科问答小站 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++GUI领域top1的QT未来会怎样? 
  你有过哪些被 C++ 摧残的经历? 
  c++ 中 结构体中的变量读写速度为什么比普通变量快? 
  PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点? 
  学习分布式系统需要怎样的知识? 
  如何评论"知名游戏开发者称 C++ 是一种非常糟糕、可怕的语言"? 
  为什么C++库开发人员都喜欢自己造一个字符串类?你见过性能最好开源字符串类是哪个? 为什么? 
  libc++ 与 libstdc++ 是什么关系? 
  C++ 中的基类为何在析构函数中添加 virtual? 
  快奔四的人了,开始学C++,是否太迟了? 

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





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