C++ 在运行时使用成员函数初始化2D vector成员变量并为其分配大小
如何在运行时使用成员函数初始化和分配2D矢量成员变量的大小 这种方法有什么问题吗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
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_矩阵)阿列克谢·巴恩斯:如果我按照所示的方式做,会不会有什么问题?取决于你所说的错误,这是一个主观问题。然而,无论出于何种目的,您都可以使用任何您喜欢的方法来构造和初始化成员。这两种解决方案似乎都可以在恒定的时间内实现结果。谢谢你的评论