【发布时间】:2018-09-11 05:33:37
【问题描述】:
我正在学习 Bjarne Stroustrup 的编程原理和实践,但遇到了困难。我目前正在阅读 Vectors 并已被介绍到基于 Range 的 for 循环。下面我有一些代码,从我的角度来看,它似乎是在将一个 double 读入一个 INT;我认为这会导致收窄。
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';
keep_window_open();
return 0;
}
在尝试使用不同的输入数次后,我得出结论,这确实在缩小。我正在创建一个双精度向量,而不是在 for(int x : temps) 循环中,将第一个元素放入 temp 中,将其放入 x 中,处理它而不是递增到下一个元素并重复。因为元素(双精度)被读入 x(整数)导致缩小。
我的主要问题是,如果我确实是正确的,它正在缩小向量中的元素(也许它实际上并没有读入 x 并且 int x 正在描述其他内容),我可以简单地替换 for(int x : temps ) 到 for(double x : temps) 以避免这种缩小,或者在基于范围的 for 循环参数中使用整数是强制性的(可能是这样设计的)。任何想法,谢谢。
【问题讨论】:
-
我想知道这不是错字。
-
我同意,一定是错字。搜索书名和
errata,然后选择与您的版本相匹配的结果。