您的位置:首页 > 编程语言 > C语言/C++

c++11的一些特性auto和范围for循环

2015-09-13 10:47 477 查看
auto的使用

c++11引入了auto类型说明符,auto让编译器通过初始值来推算变量的类型,所以auto定义的变量必须有初始值。

使用auto也能在一条语句中声明多个变量,因为一条声明语句只能有一个基本数据类型,所以该语句中所有变量的初始基本数据类型都必须一样:

eg: auto i=0,*p=& i; //正确 auto sz=0,pi=3.14;//错误,sz和pi的类型不一样。

范围for循环,遍历给定序列中的每个元素并对序列中的每个值执行某种操作。

for(declaration:expression)
statement


expression 部分是一个对象,用于表示一个序列,declaration部分负责定义一个变量,该变量被用于访问序列中的基础元素,每次迭代declaration部分的变量会被初始化为expression部分的下一个元素值。


范围for循环有两种用法:

string s("hello,world");
decltype(s.size()) punct_cnt=0;//decltype也是c++11特性,用于选择和返回操作数的数据类型。
for(auto c:s)//对于s中的每个字符
if(ispunct(c))
++punct_cnt;


string s("hello,world");
for(auto &c:s);//对于s中的每个字符,c是一个引用,赋值语句将会改变s中字符的值
c=toupper(c);
cout<<s<<endl;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ for循环 数据类型