一、什么是模板可变参数
1、对比函数可变参数
可变参数即参数的数量是不确定的,底层根据用户传入的数量,开一个数组存储对应的参数。
2、基本形式
args -- argument 参数 [0,n]个参数
// Args是一个模板参数包,args是一个函数形参参数包
// 声明一个参数包Args...args,这个参数包中可以包含0到任意个模板参数。
template <class ...Args>
void ShowList(Args... args)
{}
3、递归函数方式展开参数包
重载+递归
二、emplace
可以传入pair的2个参数,用模板的可变参数来接收。
将模板的可变参数一直传递下去,创建结点时直接使用。
对比emplace_back和push_back
push_back多了一次移动拷贝,实际上效率差距不大。