我正在学习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
中的:
)
谢谢:)
答案 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];