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

相关推荐
小溪学编程17 分钟前
从 C++ 的规范变迁看语言发展
jvm·c++·面试
ShineWinsu1 小时前
对于Redis:string类型的解析
java·c++·redis·分布式·缓存·面试·string
YYYing.2 小时前
【设计模式系列 (七) 】桥接模式
c++·后端·设计模式·桥接模式
高山有多高3 小时前
【Linux笔记】Linux自定义Shell
linux·c++
悠仁さん3 小时前
【C++】vector 类
开发语言·c++
_upupup3 小时前
智能指针的原理及简单模拟实现(C++)
开发语言·c++
l1t3 小时前
DeepSeek总结的OpenZL压缩变换器
c++·算法
郝学胜-神的一滴4 小时前
C++ Templates 01:拨开迷雾,读懂C++模板经典著作
开发语言·c++·程序人生·游戏·游戏引擎·软件构建
坤坤子吖4 小时前
算法学习——高精度加减乘除
c++·笔记·学习·算法
朝朝辞暮i4 小时前
C++ 第 14 课:引用 &
开发语言·c++·算法