【发布时间】:2016-03-26 16:28:27
【问题描述】:
我正在涉足 C++ 并试图将我的头脑围绕在指针的事情上。创建对象数组时,创建对象类型数组还是指针数组好?
例如:
Block grid[size]; 或 Block* grid[size];
根据我一直在阅读的内容,我的印象是,在使用对象时,使用指针来节省内存几乎总是更好?最终,我将创建一个动态分配的这些对象的二维数组,我想知道是否值得尝试将它们作为指针存储在多维数组中。
注意:有人告诉我要研究 2D 向量,当涉及到动态创建和分配它们时,我和这些数组一样苦苦挣扎。
提前致谢!
【问题讨论】:
-
为什么不使用像
std::vector<Block> grid(size);这样的标准容器? -
就像我在注释中所说的那样,我在创建 2D 标准向量方面同样苦苦挣扎。然后同样的问题仍然适用,我是制作 Block 还是 Block* 类型的向量?
-
使用指针只会在你重复使用同一个对象时节省内存。例如,如果同一个 Block 在您的数组中出现多次,否则它会使用额外的
sizeof(Block*)*size字节。 -
@Matt,谢谢!使用 std::vector<:vector>> 比我的方法更可取吗?
-
@nickcorin 很好,这完全取决于您使用它的目的。它是否需要可调整大小(你说“动态分配”,不一定是同一件事)?