gpt4 book ai didi

c++ - 在类中声明数组成员的正确方法

转载 作者:行者123 更新时间:2023-12-02 10:15:31 24 4
gpt4 key购买 nike

我有一个看起来像这样的类(class)

class StatisticsQuantiles : public StatisticsMC
{
public:
StatisticsQuantiles(double p_, unsigned long NumberOfPaths);
virtual void DumpOneResult(double result);
virtual std::vector<std::vector<double>> GetResultsSoFar() const;
virtual StatisticsMC* clone() const;
private:
std::vector<double> ResultList;
double p;
unsigned long PathsDone;
};

当前,它具有 vector ResultList,当使用如下所示的值调用函数时,我将在类中填充这些值:
void StatisticsQuantiles::DumpOneResult(double result)
{
ResultList.push_back(result);
PathsDone++;
}

现在我知道我将使用NumberOfPaths的许多值来填充此 vector ,因此我想使用固定大小的数组。我该如何以NumberOfPaths的大小将数组作为此类的成员?我正在尝试做这样的事情,这当然是行不通的,但是你明白了:
class StatisticsQuantiles : public StatisticsMC
{
public:
StatisticsQuantiles(double p_, const unsigned long NumberOfPaths);
virtual void DumpOneResult(double result);
virtual std::vector<std::vector<double>> GetResultsSoFar() const;
virtual StatisticsMC* clone() const;
private:
std::array<double, NumberOfPaths> ResultList;
double p;
unsigned long PathsDone;
};

最佳答案

必须在编译时知道std::array的大小,在这里不是这种情况。
所以我相信std::vector是您的选择。

如果您担心push_back调整大小的效率,可以在构造函数中保留内存。

ResultList.reserve(NumberOfPaths);

除非您插入多个NumberOfPaths元素,否则push_back不会重新调整大小。因此,您不必进行不必要的调整大小。

关于c++ - 在类中声明数组成员的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62120288/

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