【问题标题】:Meaning of for (int x : temps) in C++ [duplicate]C ++中for(int x:temps)的含义[重复]
【发布时间】:2015-08-14 03:48:16
【问题描述】:

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

它在做什么? sum 的值从何而来?

【问题讨论】:

  • 我不能把它写成评论> 查看基于范围的循环cprogramming.com/c++11/c++11-ranged-for-loop.html
  • 您问的是for (int x : temps) 部分还是sum += x 部分?
  • 我说的主要是 (for int x: temps) 部分。我知道 sum += x 只是输入 sum = sum + x 的另一种方式
  • 那个,我已经从你的帖子中删除了一大堆不相关的文本(因为只要帖子包含足够的信息,就没有人关心 你的 聪明)。请确保剩余的文字清楚地说明您的问题。
  • 我在乎...我在乎...

标签: c++


【解决方案1】:

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。显然,新语法更易于阅读和编写。

【讨论】:

  • 到目前为止,这是唯一合适的答案。
【解决方案2】:

这是一个增强的 for 循环,它是编写常规 for 循环的更好方法,并且没有用于索引数组的变量。相当于:

for (int i = 0; i < temps.size(); i++)
    sum += temps.at(i);

【讨论】:

  • 你的意思是temps.size()
  • @MattMcNabb 是的,我愿意 :P 感谢您指出这一点,有一段时间没有做 c++
  • 太棒了!这个答案是shiznit!先生,您可能对女士们很好。
【解决方案3】:

这是一个 C++11 range-based for loop 在向量 temps 的内容之上。

x 获取该向量中的每个值,循环体 (sum += x) 将每个值的 sum 递增 x。结果是sum 是向量中所有值的总和。

【讨论】:

    【解决方案4】:

    for (int x : temps) 表示循环遍历temps,获取x 中的每个元素,sum += x; 表示将x 汇总到sum。最后你会得到求和值。

    参考Range-based for loop

    【讨论】:

      【解决方案5】:

      x 从向量 temp 中的元素获取其值。

      循环:

      for(int x : temp)
      

      是一个 c++11 风格的循环,它只是遍历(迭代)向量中的每个元素并将其复制到 x。然后x 可以在循环体内使用。

      【讨论】:

      • 所以x等于元素个数?还是第一个元素还是什么?
      • 第一次迭代 x 等于 temp[0],第二次迭代 x 等于 temp[1],等等......
      猜你喜欢
      • 2014-04-15
      • 2020-01-06
      • 1970-01-01
      • 2016-01-23
      • 2013-12-19
      • 1970-01-01
      • 2022-08-03
      • 2013-12-31
      • 1970-01-01
      相关资源
      最近更新 更多