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

相关推荐
你怎么知道我是队长8 小时前
C语言---typedef
c语言·c++·算法
带土18 小时前
5. enum(枚举)关键字在C/C++中的作用
c语言·c++
驴友花雕9 小时前
【花雕学编程】Arduino BLDC 之群体机器人协同探索
c++·单片机·嵌入式硬件·arduino bldc·群体机器人协同探索
驴友花雕9 小时前
【花雕学编程】Arduino BLDC 之仿人机器人膝关节稳定系统
c++·单片机·嵌入式硬件·arduino bldc·仿人机器人膝关节稳定系统
Qhumaing9 小时前
C++学习:【PTA】数据结构 7-1 实验7-1(最小生成树-Prim算法)
c++·学习·算法
Z1Jxxx11 小时前
01序列01序列
开发语言·c++·算法
坚定学代码11 小时前
基于观察者模式的ISO C++信号槽实现
开发语言·c++·观察者模式·ai
ha204289419412 小时前
Linux操作系统学习记录之---TcpSocket
linux·网络·c++·学习
AI视觉网奇13 小时前
ue5 插件 WebSocket
c++·ue5
左直拳13 小时前
将c++程序部署到docker
开发语言·c++·docker