C++ 在运行时使用成员函数初始化2D vector成员变量并为其分配大小

C++ 在运行时使用成员函数初始化2D vector成员变量并为其分配大小,c++,vector,constructor,runtime,2d,C++,Vector,Constructor,Runtime,2d,如何在运行时使用成员函数初始化和分配2D矢量成员变量的大小 这种方法有什么问题吗 class A { vector<vector<int>> m_matrix; // trying to resize without using explicit resize // using the constructor of 2D vectors at run time // want the code to look simpler and avoid new/pointer

如何在运行时使用成员函数初始化和分配2D矢量成员变量的大小

这种方法有什么问题吗

class A {

vector<vector<int>> m_matrix;

// trying to resize without using explicit resize
// using the constructor of 2D vectors at run time
// want the code to look simpler and avoid new/pointers
void initialize_matrix(int row, int column) {
  m_matrix = std::move(vector<vector<int>>(row, vector<int>(column, DEFAULT_VALUE)));
}
}
A类{
向量m_矩阵;
//尝试在不使用显式调整大小的情况下调整大小
//在运行时使用2D向量的构造函数
//希望代码看起来更简单,避免使用新的/指针
无效初始化矩阵(int行,int列){
m_矩阵=std::move(向量(行、向量(列、默认_值));
}
}

您的问题的答案是,这样就行了。它使用
move
来防止编译器错误地使用复制赋值,这是一种很好的方法


不过,您似乎在征求建议,因此我认为
vector
是一个糟糕的选择,因为所有子
vector
的大小都相同。您可以考虑使用单个<代码>向量<代码>。我找了一个使用单个
向量
替换
向量
-的例子,我能找到的最简单的事情是:这里有一个更好的描述:

你的问题的答案是是的,这很好。它使用
move
来防止编译器错误地使用复制赋值,这是一种很好的方法


不过,您似乎在征求建议,因此我认为
vector
是一个糟糕的选择,因为所有子
vector
的大小都相同。您可以考虑使用单个<代码>向量<代码>。我寻找了一个使用单个
向量
替换
向量
-of-
向量
的例子,我能找到的最简单的事情是:这里有一个更好的描述:

我会使用
向量(行,向量(列,默认值)).swap(m_矩阵)vector(行、向量(列、默认值)).swap(m_矩阵)