C++ 嵌套向量的动态分配
我做了这样的事情:C++ 嵌套向量的动态分配,c++,C++,我做了这样的事情: Grid(int row, int col):num_of_row_(row), num_of_col_(col) { grid_ = new vector<vector<bool> > (row, col); } Grid(int row,int col):行数(row),列数(col){ 网格=新向量(行、列); } 它动态地分配嵌套向量。这是正确的吗?我的意思是使用这种语法: new vector<vector<ty
Grid(int row, int col):num_of_row_(row), num_of_col_(col) {
grid_ = new vector<vector<bool> > (row, col);
}
Grid(int row,int col):行数(row),列数(col){
网格=新向量(行、列);
}
它动态地分配嵌套向量。这是正确的吗?我的意思是使用这种语法:
new vector<vector<type> > (outersize, innersize)
new vector<vector<type> > (outersize, vector<type>(innersize, elementValue));
新向量(outersize,innersize)
其中**outersize和innersize都是“int”变量**
更新:
我实际上使用了这个代码,而且它是有效的。我只想找出原因。传递给构造函数的第二个参数是要重复
outersize
次的向量元素。您应该使用以下语法:
new vector<vector<type> > (outersize, innersize)
new vector<vector<type> > (outersize, vector<type>(innersize, elementValue));
注意,在某些实现中,向量可能不是您认为的那样。我不认为这是正确的,但我已经有一段时间没有这样做了,所以我会让其他人在这方面比我的答案更了解…你试过编译它吗?vector是一个动态容器。也就是说,它会根据你给它喂食的食物来调整自己的大小。在这种情况下,“新”是不必要的。你真的在寻找
新的bool[outer][inner]代码>?@RefugnicEternium:不正确<代码>标准::向量v;v[1]=2代码>是未定义的行为,而不是自动调整大小。问题是,为什么是“新的”?你真的需要它吗?嗨,我试过了。但在这种情况下,我需要innersize和outersize都是变量,这很好,它们不需要是常量。可以说,这是向量相对于内置数组的最大优势。谢谢,但我尝试了变量。它给了我一个错误:“行”不能出现在常量中-expression@AlanShore我不认为应该这样做:当我使用变量时,这里有一个简单的例子。但我仍然想知道为什么我的代码实际上可以工作。你能解释一下吗?