赞
踩
范围 for(range for)语句,对于对于遍历给定序列中的每个元素并对序列中的每个值执行某种操作是非常方便的。
for (declaration : expression)
{
statement;
}
其中,expression部分是一个对象,用于表示一个序列;declaration部分负责定义一个变量,该变量将被用于访问序列中的基础元素。
每次迭代,declaration部分的那个变量,将被初始化为expression部分的下一个元素值。
如:
vector<int> vecIntTest(10, 0);//表示将该数组初始化为10个1.
for (auto data : vecIntTest)
{
cout << data << '\t';//将值依次打印输出
}
这种方法可以结合输入进行使用,如:
int main() { vector<int> vecInt; int iTemp; while (cin >> iTemp) { vecInt.push_back(iTemp); } for (auto data : vecInt) { cout << data << '\t'; } cout << endl; return 0; }
以上的这种方式,可以说简化了对于一个序列遍历的代码量,推荐使用。
适用范围:
一个序列,包括各种容器,包括数组,甚至包括字符串。
如:
string strTest = "Hello World";
for (auto c : strTest)//这个地方没有使用引用,一个副本就可以了
{
cout << c << '\t';
}
以上代码可以延伸为将里面的字符全部变为大写,如下:
string strTest = "Hello World";
for (auto &c : strTest)//注意,这个地方应该使用“引用”
{
c = toupper(c);//因为使用的是引用,所以改变的是原先的值
}
cout << strTest << endl;//最终的输出结果是HELLO WORLD
根据需求灵活使用“引用”和“非引用”(需要更改原先的值就使用引用,否则就不要使用引用)。
参考书籍:《C++ Primer》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。