在类中声明动态2D矢量

问题描述 投票:4回答:4

我们正在尝试使用2D向量,因为我们希望2D数组能够动态增长。

我们尝试过:在类声明中:

    vector<vector<double> > table;

但随后似乎未分配表。尝试访问成员时会出现段错误。

所以我们尝试了这个:

类声明:

    vector<vector<double> >* table;

构造函数:

     table = new vector<vector<double> >;

但是现在我们以前使用[] []进行访问的方式不起作用。

我们为此尝试了一个虚拟课:

class myClass {
    public:
    myClass();
    ~myClass();
    vector<vector<double> > t;
 };

myClass::myClass() 
{
    t = vector<vector<double> > (10, vector<double>(10));
}

但是它不能正常释放,我们得到了核心转储。同样,当我们尝试增加数组时,我们会明确构造每个新行。

Ex:

t[50] = vector<double>(5);
t[50][10] = 10;

[如果我们不这样做,则会出现段错误

c++ stl vector
4个回答
6
投票

访问元素之前,您需要调整表的大小。


3
投票

请确保向量足够大以存储元素。如果向量t的大小为N,则您可以访问的最后一个元素是t[N-1]


2
投票

如果已安装Boost,请尝试使用Boost Multi-array


0
投票

您可以通过取消引用以[] []的方式访问元素。

© www.soinside.com 2019 - 2024. All rights reserved.