模板可变参数/包装器

 一、什么是模板可变参数

1、对比函数可变参数

模板可变参数/包装器_第1张图片

可变参数即参数的数量是不确定的,底层根据用户传入的数量,开一个数组存储对应的参数。

2、基本形式

args -- argument  参数  [0,n]个参数

// Args是一个模板参数包,args是一个函数形参参数包
// 声明一个参数包Args...args,这个参数包中可以包含0到任意个模板参数。
template 
void ShowList(Args... args)
{}

模板可变参数/包装器_第2张图片

3、递归函数方式展开参数包

重载+递归

模板可变参数/包装器_第3张图片

二、emplace

模板可变参数/包装器_第4张图片

模板可变参数/包装器_第5张图片

可以传入pair的2个参数,用模板的可变参数来接收。

将模板的可变参数一直传递下去,创建结点时直接使用。

对比emplace_back和push_back

模板可变参数/包装器_第6张图片

push_back多了一次移动拷贝,实际上效率差距不大。

你可能感兴趣的:(C++人生,开发语言,数据结构)