当前位置:   article > 正文

C++中的 range for(范围for)语句_c++ range for

c++ range for

范围 for(range for)语句,对于对于遍历给定序列中的每个元素并对序列中的每个值执行某种操作是非常方便的。

基本语法:

for (declaration : expression)
{
	statement;
}
  • 1
  • 2
  • 3
  • 4

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

vector<int> vecIntTest(10, 0);//表示将该数组初始化为10个1.

for (auto data : vecIntTest)
{
	cout << data << '\t';//将值依次打印输出
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

这种方法可以结合输入进行使用,如:

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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

以上的这种方式,可以说简化了对于一个序列遍历的代码量,推荐使用。

适用范围:
一个序列,包括各种容器,包括数组,甚至包括字符串。
如:

string strTest = "Hello World";
for (auto c : strTest)//这个地方没有使用引用,一个副本就可以了
{
	cout << c << '\t';
}
  • 1
  • 2
  • 3
  • 4
  • 5

以上代码可以延伸为将里面的字符全部变为大写,如下:

string strTest = "Hello World";

for (auto &c : strTest)//注意,这个地方应该使用“引用”
{
	c = toupper(c);//因为使用的是引用,所以改变的是原先的值
}
cout << strTest << endl;//最终的输出结果是HELLO WORLD
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

根据需求灵活使用“引用”和“非引用”(需要更改原先的值就使用引用,否则就不要使用引用)。

参考书籍:《C++ Primer》

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/795568
推荐阅读
相关标签
  

闽ICP备14008679号