有时候我们不知道应该向函数传递几个实参,那么可以传递一个名为initializer_list的标准库类型:如果实参的类型不同,我们可以编写一个特殊的函数,也就是所谓的可变参数模板
操作 | 功能 |
---|---|
initializer_list<T> lst | 默认初始化 |
initializer_list<T> lst{a,b,c,} | 初始化,列表中的元素是const |
lst2(lst) | 拷贝(并不会复制,原始列表和副本共享元素) |
lst2=lst | 拷贝(并不会复制,原始列表和副本共享元素) |
lst.size() | 数量 |
lst.begin() | 首指针 |
lst.end() | 尾指针 |
与vector不同, initializer_list中的值都为常量!!
例子:
if(aa=bbb)
error_msg({"haha","oo","sisi"});
else
error_msg({"heihei","wrong","!"});
void error_msg(initializer_list<string> i1){
for(auto beg=i1.begin();beg!=i1.end();++beg){
cout<<*beg<<endl;
}
cout<<endl;
}