行业知识
【C++】C++11中的常见语法(下)
2026-10-21 01:08:26
来源:互联网转载
C++11
- 一、可变参数模板
- 1. 递归函数方式展开参数包
- 2. 逗号表达式展开参数包
- 3. STL容器中的 empalce 相关接口函数
- 二、lambda 表达式
- 1. C++98 中的一个例子
- 2. 使用 lambda 表达式
- 3. lambda 表达式语法
- (1)lambda 表达式各部分说明
- (2)捕获列表说明
- 4. 函数对象与 lambda 表达式
- 三、包装器
- 1. function 包装器
- 2. bind
一、可变参数模板
C++11 的新特性可变参数模板能够让我们创建可以接受可变参数的函数模板和类模板,相比 C++98/03 ,类模版和函数模版中只能含固定数量的模版参数,可变模版参数是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧,所以这块还是比较晦涩的。所以我们只需要掌握一些基础的可变参数模板特性够了,如果大家有需要,再可以深入去学习。
其实我们早就接触过可变参数了,例如 printf 函数,这个是函数的可变参数,如下图:
… 代表可以传任意个参数。
以下是可变参数模板的语法:
// Args是一个模板参数包,args是一个函数形参参数包// 声明一个参数包Args...args,这个参数包中可以包含0到任意个模板参数。template void ShowList(Args... args){}我们可以像以下这样传参:
int main(){ShowList(1, 2, 3, 4, 5);ShowList(1, "abcde", 3.33);return 0;}我们可以通过 sizeof...(args) 计算出参数包的个数,如下:
template void ShowList(Args... args){cout
下一篇:为什么圆的面积是?