C++学习笔记4--C++11
本文主要是C++11新语法。
包括:
- variadic templates
- auto
- for
variadic templates
可变模板参数将参数分为一个和一包,然后这样递归调用下去。当调用到最后一个42的时候,只剩0个了,这时候调用空的print()
函数。
如果想要知道一包有多少函数,可以用sizeof...(args)
。
auto
之前对于迭代器我们需要写list<string>::iterator ite
,但是对于函数find(c.begin(),c.end(),target)
,编译器能够推出返回值类型,所以可以用auto。
但是不能直接定义auto ite;
ranged-base for
for( decl : coll)
{ statement }
/////////////////////////////
for(auto elem: vec)
{ cout<<elem<<endl;}
for(auto& elem: vec)
{ elem *= 3; }
把冒号后面容器的内容一个一个赋值给decl.当应用的时候,如果对值乘以3,影响的不是原来容器中的内容,而是elem的值。如果要同时改变容器中的值,就要使用引用的方式。
int& r=x;
// r代表x,但是这里的实现还是用指针实现的。但是sizeof(r)==sizeof(x)
&r == &x
这是编译器制造出来的假象。