STL中emplace实现原理是什么?

复制代码
template <class... Args>
  void emplace_back (Args&&... args);

这个是vector的emplace_back方法,用到的c++11的语法有三个,分别是万能引用、完美转发、参数包。

参数包中的参数是用来构造vector<T>中的T对象。

假如我直接传的就是一个T对象,万能引用和完美转发实现传参的T是右值就调用移动构造,是左值就调用拷贝构造,如果是空就调用T默认构造,如果是普通参数就调T普通带参构造,所以emplace实现了你可以调用T的任意一个构造函数来构造T并插入vector尾部

相关推荐
不染尘.5 小时前
2025_11_7_刷题
开发语言·c++·vscode·算法
似水এ᭄往昔5 小时前
【C++】--stack和queue
开发语言·c++
仰望—星空5 小时前
MiniEngine学习笔记 : CommandListManager
c++·windows·笔记·学习·cg·direct3d
怕什么真理无穷6 小时前
C++面试4-线程同步
java·c++·面试
fpcc7 小时前
c++23中的print和println
c++·c++23
玉树临风江流儿8 小时前
C++左值、右值、move移动函数
开发语言·c++
许长安9 小时前
c/c++ static关键字详解
c语言·c++·经验分享·笔记
Murphy_lx9 小时前
C++ thread类
开发语言·c++
月夜的风吹雨9 小时前
【C++ STL 深度剖析】:vector 底层模拟实现与核心陷阱解析
c++·vector·类和对象·visual studio
彩妙不是菜喵9 小时前
C++ 中 nullptr 的使用与实践:从陷阱到最佳实践
开发语言·jvm·c++