C ++:有关for语句和参数的常规q

时间:2018-06-28 01:28:35

标签: c++

我正在学习c ++。我遇到了一个我不了解的温度任务。你们能为我澄清一些事情吗?

这是代码

I am B, value 44

现在第二个区块(//计算平均温度)是我无法理解的东西。

首先,for语句与单个参数一起使用。这不是说只有一个初始表达式而没有条件吗?

我也不认为我对// compute mean and median temperatures int main() { vector<double> temps; // temperatures for (double temp; cin>>temp; ) // read into temp temps.push_back(temp); // put temp into vector **// compute mean temperature: double sum = 0; for (int x : temps) sum += x; cout << "Average temperature: " << sum/temps.size() << '\n';** // compute median temperature: sort(temps); // sort temperatures cout << "Median temperature: " << temps[temps.size()/2] << '\n'; } 有深刻的了解int X在这段代码中的其他地方都没有定义。因为没有赋值,它不会引起错误吗?假设它的值为1;它做什么/检查什么?是否检查X适应矢量温度的次数?为什么不这样做呢?

int X : temps

此标识符叫什么,以便我可以进一步了解它(int sum_of_measurements = 0; //value of all measurements for (int y = 0; y <= temps.size(); ++y){ sum_of_measurements = sum_of_measurements + temps[y]; // add value of measurement to the total for each measurement } double mean = sum_of_measurements/temps.size(); cout << mean <<'\n'; //rest of code 中的:

谢谢:)

1 个答案:

答案 0 :(得分:1)

这是C++11中引入的range-based for loop

类似这样的语句:

for (int someVal: someCollection)

将遍历someCollection,并将someVal设置为集合中 中的每个项目(每次迭代一个)。

在您的特定情况下(将x的类型更改为更合适的代码后),该代码段:

double sum = 0;
for (double x : temps)
    sum += x;

在功能上等同于:

double sum = 0;
for (int i = 0; i < temps.size(); ++i)
    sum += temps[i];