百科问答小站 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++ 中这两个结构体的大小(size)? 
  怎么用好《C++ Primer》(英文版)? 
  在用 STL 和 Boost 的,都是什么人? 
  C++ 中,如果指针换了被指向的东西,那被指向的原来的东西(是被 new 出来的)所占的内存会立刻被释放吗? 
  如何看待 Rust 这门语言? 
  怎样理解C++中“如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题”? 
  为什么纯虚函数不提供函数体语法?这样不是更方便么? 
  为什么1ULL << 64得到的结果是1? 
  为什么 C++ 能够源码级兼容C语言? 

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





© 2025-04-18 - tinynew.org. All Rights Reserved.
© 2025-04-18 - tinynew.org. 保留所有权利