创建一个名为 MyVector 的类,使其公有继承 C++中的 vector<double>,并添加统计功能, 例如平均值、中位数和标准差。
时间: 2024-02-18 09:03:34 浏览: 81
好的,我理解了你的问题。下面是一个简单的 MyVector 类的实现,它公有继承了 vector<double> 并添加了平均值、中位数和标准差的统计功能:
```cpp
#include <vector>
#include <algorithm>
#include <cmath>
class MyVector : public std::vector<double>
{
public:
double get_mean() const
{
double sum = 0.0;
for (const auto& val : *this)
{
sum += val;
}
return sum / this->size();
}
double get_median() const
{
auto size = this->size();
if (size == 0)
{
return 0.0;
}
std::sort(this->begin(), this->end());
if (size % 2 == 0)
{
return (this->at(size / 2 - 1) + this->at(size / 2)) / 2.0;
}
else
{
return this->at(size / 2);
}
}
double get_standard_deviation() const
{
double mean = get_mean();
double variance = 0.0;
for (const auto& val : *this)
{
variance += (val - mean) * (val - mean);
}
return sqrt(variance / this->size());
}
};
```
在这个实现中,我们使用了 C++ 中的标准库 vector 和 algorithm,以及数学库 cmath。
实现中的三个函数分别为 `get_mean()`,`get_median()` 和 `get_standard_deviation()`,它们分别用于计算向量的平均值、中位数和标准差。
其中,`get_mean()` 函数使用了 vector 迭代器来遍历向量中的所有元素,并计算它们的总和,最后除以向量的大小得到平均值。
`get_median()` 函数首先将向量排序,然后根据向量的大小分别计算中位数。如果向量大小为偶数,则取中间两个元素的平均值作为中位数;如果向量大小为奇数,则直接取中间的元素作为中位数。
`get_standard_deviation()` 函数则根据定义计算向量的标准差。具体来说,它首先计算向量的平均值,然后依次计算每个元素与平均值的差值的平方,并将所有差值的平方求和。最后,将差值的平方和除以向量的大小,并取平方根即可得到标准差。
以上就是一个简单的 MyVector 类的实现。希望能够帮助到你!
阅读全文