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

奥斯卡奖

我有一个看起来像这样的课程

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;
};

当前,它具有向量ResultList,当使用如下所示的值调用函数时,我将在类中填充这些值:

void StatisticsQuantiles::DumpOneResult(double result)
{
    ResultList.push_back(result);
    PathsDone++;
}

现在我知道我将使用NumberOfPaths的许多值来填充此向量,因此我想使用固定大小的数组。我该如何以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不会重新调整大小。因此,您不必进行不必要的调整大小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在c中传递或声明数组成员?

来自分类Dev

C ++中类数组成员的初始化

来自分类Dev

Arduino类数组成员

来自分类Dev

Arduino类数组成员

来自分类Dev

如何在 Delphi 7 中将数组成员声明为类

来自分类Dev

如何为数组成员变量声明 getter/setter

来自分类Dev

类具有带动态数组成员的类

来自分类Dev

类具有带动态数组成员的类

来自分类Dev

在类中,数组成员C ++ 11的默认初始化程序

来自分类Dev

C ++类,数组成员的大小由CTOR传递

来自分类Dev

C ++类,数组成员的大小由CTOR传递

来自分类Dev

为什么需要在constexpr类中成员初始化非静态数组成员?

来自分类Dev

为什么需要在constexpr类中成员初始化非静态数组成员?

来自分类Dev

嵌套结构中的灵活数组成员

来自分类Dev

C ++中的灵活数组成员的可移植仿真?

来自分类Dev

Swift:访问数组中的元组成员

来自分类Dev

在C中访问灵活数组成员

来自分类Dev

函数中的数组成员比较不起作用

来自分类Dev

Swift:访问数组中的元组成员

来自分类Dev

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

来自分类Dev

C#数组成员

来自分类Dev

使用指针到达数组成员

来自分类Dev

OR 子句或数组成员检查

来自分类Dev

屏蔽数组成员的位

来自分类Dev

UPPAAL:检查数组成员

来自分类Dev

声明一个静态私有数组成员

来自分类Dev

如果基类包含数组成员,则派生类的构造函数不能为constexpr

来自分类Dev

删除类的复制构造函数时,初始化类的数组成员

来自分类Dev

正确的方式来访问数组成员作为其他类型?