静态数组矢量与运行时确定的大小

时间:2017-01-09 02:49:11

标签: c++ arrays vector

我希望我的类的成员是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) {}
 };

注意:如果可能,我希望类的用户能够传入值来确定数组的大小,但我的尝试并不表示有什么要完成,我愿意接受任何建议。

1 个答案:

答案 0 :(得分:-1)

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