一、variadic template(数目不定的模板参数)
十分重要的知识点。
这里讲的就是模板函数中传入的参数为一个和一包。
有点像
int main(argv,char*[] argv);第一个参数时表示输入的命令个数,第二个则是指针数组,数组中的指针指向的是每一个字符数组。也就是一个命令,例如一个文件路径。
以上图像中表示的是通过递归的方式将所有的参数打印出来。边界条件中有一个函数重载中的没有参数的函数,所以就没有语句执行。
二、auto
用法例子:
list<string> c;
...
list<string>::iterator ite = find(c.begin(),c.end(),target);//以前的写法
auto ite = find(c.begin(),c.end(),target);//现在的写法,编译器自动帮我
//所以auto就是为了方便
//注意auto ite;这个是不对的,因为没有右值,编译器无法自动帮我们分配类型
三、range-base
for(decl : coll){
statement;
}
//例子:
for(int i:{2,3,5,7,9,13,17,19}){
cout<<i<<endl;
}
重要:auto与range-base一起用
再次复习了引用和传值的区别,一个会改变原型,一个是复制副本,不会影响。