C ++中for(int x:temps)的含义

时间:2015-08-14 03:48:16

标签: c++

这里有一些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;

它在做什么?和的价值来自哪里?

5 个答案:

答案 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。最后你会得到求和值。

Range-based for loop

的参考

答案 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可以在循环体内使用。