这里有一些c ++代码。
vector<double> temps;
for (double temp; cin>>temp;)
temps.push_back(temp);
double sum = 0;
for (int x : temps) sum += x; //what is this doing?
cout << "Average temperature:
所以这一行:
for (int x : temps) sum += x;
它在做什么?和的价值来自哪里?
答案 0 :(得分:3)
for(int x : temp) { sum += x; }
被定义为等同于:
for ( auto it = begin(temp); it != end(temp); ++it )
{
int x = *it;
sum += x;
}
对于向量,begin(temp)
解析为temp.begin()
,auto
解析为vector::iterator
。显然,新语法更容易阅读和写入。
答案 1 :(得分:2)
这是关于向量temps
内容的C ++ 11 range-based for loop。
x
获取该向量中的每个值,并且循环体(sum += x
)为每个值增加sum
x
。结果是sum
是向量中所有值的总和。
答案 2 :(得分:1)
for (int x : temps)
表示循环temps
,获取x中的每个元素,sum += x;
表示将x
汇总为sum
。最后你会得到求和值。
答案 3 :(得分:1)
它是一个增强的for循环,它是编写常规for循环的一种更好的方法,并且没有用于索引数组的变量。它相当于:
for (int i = 0; i < temps.size(); i++)
sum += temps.at(i);
答案 4 :(得分:0)
x
从向量temp
中的元素中获取其值。
循环:
for(int x : temp)
是一个c ++ 11样式循环,它只运行(迭代)向量中的每个元素并将其复制到x
。然后x
可以在循环体内使用。