gpt4 book ai didi

c++ - vector : Two Lines, 需要解释

转载 作者:行者123 更新时间:2023-11-30 03:29:25 26 4
gpt4 key购买 nike

我无法理解代码中几行的含义。我最近开始学习 C++,并阅读了 Bjarne Stroustrup 的“编程:使用 C++ 的原理和实践”。第四章有个问题让我很困惑,所以我在网上搜索了一个解决方案以供引用。这是我最终与本书结合使用的代码:

#include "std_lib_facilities.h"

int main()
{
vector<double> temps;
for (double temp; cin >> temp;)
temps.push_back(temp);

double sum = 0;
for (double x : temps) sum += x;
cout << "Average Temperature: " << sum / temps.size() << "\n";

if (temps.size() %2==0) {
sort(temps);
cout << "Median Temperature: " << (temps[temps.size() / 2 - 1] + temps[temps.size() / 2]) / 2 << "\n"; //line one
} else {
sort(temps);
cout << "Median Temperature: " << temps[temps.size() / 2] << "\n"; //line two
}

keep_window_open();
return 0;
}

我评论了我不明白的台词。这些 vector 到底发生了什么?我知道“temps.size()”用于调用 vector 中的元素,通常“-1”表示取最后一个值。然而,当我尝试在脑海中思考这个问题时,它与输出结合起来就没有意义了。是的,代码中的输出是正确的,但是有人可以帮我解释一下这些行吗?我只是不想只是复制和粘贴代码而不理解它。我需要在基本层面上了解代码如何正确输出的帮助,以便我可以制定自己的解决方案。谢谢!

最佳答案

数据集的中位数是一半数据高于中位数,一半数据低于中位数的值。如果有奇数个数据点,则为中间数据点的值。如果有偶数个数据点,则为两个中心数据点的算术平均值。

第 1 行之前的 if 语句检查数据点的数量是偶数还是奇数。如果比较为真,则有偶数个数据点,因此您需要取 temps[temps.size()/2-1] 的平均值(这是最大值低于中位数)和 temps[temps.size()/2](这是高于中位数的最小值)。如果比较结果为假,则有奇数个元素,因此中位数是中间元素 temps[temps.size()/2]

关于c++ - vector : Two Lines, 需要解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45704889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com