在课堂上声明动态2D矢量

mdo*_*ogg 4 c++ stl vector

我们正在尝试使用2D矢量,因为我们需要一个动态增长的2D数组.

我们试过这个:在类声明中:

    vector<vector<double> > table;
Run Code Online (Sandbox Code Playgroud)

但是似乎没有分配表格.当我们尝试访问成员时,我们会遇到段错误.

那么我们尝试了这个:

类声明:

    vector<vector<double> >* table;
Run Code Online (Sandbox Code Playgroud)

构造函数:

     table = new vector<vector<double> >;
Run Code Online (Sandbox Code Playgroud)

但是现在我们之前访问它的方式(使用[] [])不起作用.

我们尝试了一个虚拟类:

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

myClass::myClass() 
{
    t = vector<vector<double> > (10, vector<double>(10));
}
Run Code Online (Sandbox Code Playgroud)

但它不能正常免费,我们得到核心转储.此外,当我们尝试增长数组时,我们将展开构建每个新行.

例如:

t[50] = vector<double>(5);
t[50][10] = 10;
Run Code Online (Sandbox Code Playgroud)

如果我们不这样做,我们会得到一个段错误

Eri*_*rik 6

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

vector<vector<double> > table;
table.resize(10);
for (int i = 0; i < 10; ++i)
  table[i].resize(20);
Run Code Online (Sandbox Code Playgroud)