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

标签 c++ vector constructor runtime 2d

如何在运行时使用成员函数为二维 vector 成员变量初始化和分配大小?

这种做法有什么问题吗?

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)));
}
}

最佳答案

您的问题的答案是,这会很好。它使用 move防止编译器错误地使用复制赋值,这是一个很好的做法。

虽然你似乎在寻求建议,所以我建议 vector<vector<int>>考虑到所有子 vector 是一个糟糕的选择s 大小相同。您可以考虑使用单个 vector .我找了一个使用单个 vector 的例子替换 vector -的- vector s 和我能在 http://stackoverflow.com 上找到的最简单的东西这是:https://stackoverflow.com/a/37868317/2642059不过这里写得更好一点:http://upcoder.com/2/efficient-vectors-of-vectors

关于c++ - 在运行时使用成员函数为 2D vector 成员变量初始化和分配大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38241965/

相关文章:

c++ - 奇怪的 VC++ 编译错误,C2244

C++ 基类列表以及如何确定类类型

c++ - 使用 constexpr 构造函数前向声明结构

JAVA java.lang.reflect.Constructor 无法调用 Date 构造函数

c++ - 多线程深度复制

c++ - 如何从服务获取用户桌面的路径?

c++ - 在 openGL 中绘制平面

c++ - 使用 SFML 在第二台显示器上打开全屏窗口?

c++ - 如何修复具有 unique_ptr 的对象的 vector

java - 一种检查只有一个变量不为 0 的简短数学方法