我有一个看起来像这样的课程
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] 删除。
我来说两句