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尾部

相关推荐
小邓儿◑.◑1 小时前
C++武功秘籍 | 入门知识点
开发语言·c++
杨筱毅4 小时前
【优秀三方库研读】【C++基础知识】odygrd/quill -- 折叠表达式
c++·三方库研读
hjjdebug5 小时前
c++中的enum变量 和 constexpr说明符
c++·enum·constexpr
CoderCodingNo6 小时前
【GESP】C++二级真题 luogu-B4259 [GESP202503 二级] 等差矩阵
java·c++·矩阵
明月看潮生6 小时前
青少年编程与数学 02-018 C++数据结构与算法 11课题、分治
c++·算法·青少年编程·编程与数学
Echo``6 小时前
2:QT联合HALCON编程—图像显示放大缩小
开发语言·c++·图像处理·qt·算法
想睡hhh7 小时前
c++STL——stack、queue、priority_queue的模拟实现
开发语言·c++·stl
cloues break.7 小时前
C++初阶----模板初阶
java·开发语言·c++
wwww.wwww8 小时前
Qt软件开发-摄像头检测使用软件V1.1
开发语言·c++·qt
共享家95278 小时前
栈相关算法题解题思路与代码实现分享
c++·leetcode