百科问答小站 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一个较大的值 再试试看




  

相关话题

  在不使用奇淫怪技的情况下, 如何写出比 STL 快的 vector? 
  如何使malloc分配内存失败时,强制结束程序? 
  如何解决 C++ 代码不能打开提示有一个错误的问题? 
  Android 将来能否实现用 C/C++ 作为开发语言?还是说现在的架构就注定了只适合用 Java? 
  如果 C# 当年设计成一个彻底编译到机器码的但有运行时的 AOT 语言,能不能真的拿来代替 C++? 
  为什么尽管 C++ 早就有了很多现代功能,但是却长期给人原始的印象呢? 
  c++中能否判断一个指针指向栈还是堆? 
  const TYPE * 究竟限制的是什么? 
  C++20 vs Rust,谁胜谁败? 
  Borland 是间什么样的公司 他给我们留下了什么文化遗产? 

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





© 2025-06-03 - tinynew.org. All Rights Reserved.
© 2025-06-03 - tinynew.org. 保留所有权利