#include<initializer_list> // 头文件
initializer_list<T> lst; // 默认初始化,T类型元素的空列表
initializer_list<T> lst{a,b,c...}; // 初始化为初始值列表的副本
lst2(lst) // 拷贝或赋值不会拷贝列表中的元素;拷贝后,
lst2 = lst // 原始列表和副本共享元素
lst.size() // 列表中的元素数量
lst.begin() // 返回指向lst中首元素的指针
lst.end() // 返回指向lst中尾元素下一位置的指针
string func(initializer_list<string> li)
{
string str("");
for(auto beg=li.begin(); beg!=li.end(); ++beg)
str += *beg;
return str;
}
int main()
{
cout << func({"This"," ","is"," ","C++"}) << endl;
return 0;
}
void foo(parm_list, ...); // 典型例子 int printf(const char* format, ...)
#include<cstdarg> // C中是<stdarg.h> // va_list是一种数据类型,args用于持有可变参数。 // 定义typedef char* va_list; va_list args; // 调用va_start并传入两个参数:第一个参数为va_list类型的变量 // 第二个参数为"..."前最后一个参数名 // 将args初始化为指向第一个参数(可变参数列表) va_start(args, paramN); // 检索参数,va_arg的第一个参数是va_list变量,第二个参数指定返回值的类型 // 每一次调用va_arg会获取当前的参数,并自动更新指向下一个可变参数。 va_arg(args,type); // 释放va_list变量 va_end(args);
int add_nums(int count,...)
{
int result = 0;
va_list args;
va_start(args, count);
for(int i=0; i<count; ++i)
result += va_arg(args, int);
va_end(args);
return result;
}
int main()
{
cout << add_nums(4, 25, 25, 50, 50) << endl;
return 0;
}
// Args是一个模板参数包;rest是一个函数参数包 template <typename T, typename...Args> void foo(const T &t, const Args&...rest);
// 用来终止递归并处理包中最后一个元素
template <typename T>
void print(const T &t)
{
cout << t;
}
// 包中除了最后一个元素之外的其他元素都会调用这个版本的print
template <typename T, typename...Args>
void print(const T &t, const Args&...rest)
{
cout << t << " "; // 打印第一个实参
print(rest...); // 递归调用,打印其他实参
}
// 测试
int main()
{
print("string1", 2, 3.14f, "string2", 42);
cout << endl;
return 0;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有