大小在运行时确定的静态数组的向量

Vector of static arrays with size determined at run-time

本文关键字:静态 数组 向量 运行时      更新时间:2023-10-16

我希望我的类的一个成员是std:array的向量,但我希望数组大小由类的用户传入的变量确定。这可能吗?我尝试使用初始值设定项列表执行此操作,但收到非常明显的错误消息:

csvParser.cpp:18:35: error: invalid use of non-static data member ‘Parser::featureCount’ std::vector<std::array<lDouble, featureCount> > data;

这是我的尝试:

#include <vector>
#include <array>
typedef long double lDouble;
class Parser {
    const size_t featureCount;
    std::vector<std::array<lDouble, featureCount> > data;
    public:
        Parser(size_t numFeatures) : featureCount(numFeatures) {}
 };

注意:如果可能的话,我希望类的用户能够传入值以确定数组的大小,但我的尝试并不表示必须如何完成任何事情,我愿意接受任何建议。

std::array 是使用 C 样式数组实现的。这就是为什么您无法在运行时确定大小的原因。如果需要在运行时更改大小的数组,请使用 std::vector 或使用以下方法。

class Parser
{
private:
    size_t size;
    std::vector<lDouble*> data;
public:
    Parser(const size_t& size)
        : size(size)
    {
        lDouble* arr = new lDouble[size];
        data.push_back(arr);
    }
};