说起for语句,我们都不会陌生,因为在循环中经常会用for语句来遍历一些数组什么的,就形如以下的for循环,是我们最常见的:
for (int i = 0; i < 5; i++) { cout << i << endl; }
范围for语句可以遍历容器或者其他序列的所有元素。以下用一个小小的代码测试片段说明一下这个新特性的使用方法:
/*传统写法,遍历每个string类型的字符*/ string str("hello world"); for (int i = 0; i < str.size(); i++) { cout << str[i] << endl; }
/*范围for循环*/ string str("hello world"); for (auto c : str) { cout << c << endl; }
由以上两个图可以看到,输出的结果是一样的,但是for循环的用法却是不同的,第二种写法显然更便捷,也可以有效防止数组越界。因为c++对于标准库中这些类型,并不会检验下标是否合法,一旦使用了一个超出范围的下标,会产生不可预知的后果。所以使用新标准的范围for循环,对于安全性应该也是更好的。
“秋风萧瑟天气凉,草木摇落露为霜,群燕辞归雁南翔。”—曹丕《燕歌行》