之前,我一直使用指针创建Object
类的2D数组,语法如下:
Object** myArray = new Object*[row_num];
for (int i = 0; i < row_num; i++)
{
myArray[i] = new Object[col_num];
[skip]
}
然而,许多人建议我使用
vector<vector<Object>>
而不是使用 Object**
。就我而言,向量需要更多的内存以换取数组大小更容易改变的优点。但由于我需要的二维数组用于网格的回溯算法(一旦确定其维度就不会改变),因此我不觉得有必要更改它们。
是否还存在其他我不知道的
vector
优点?
delete
。 - NathanOliverat
函数,就可以大大降低未定义行为的风险。此外,请参见这里。 - scohe001vector<vector<Object>>
不好。在此基础上,将vector<Object>
封装在某个类中,并通过运算符() (size_t row, size_t column) 访问元素。 - user2249683new
(然后仅调用两次delete
)进行优化,而与行数无关。https://dev59.com/aWEh5IYBdhLWcg3w12ml#21944048 - PaulMcKenzievector
“占用更多内存”的说法所分散注意力。这基本上是错误的,涉及到的额外内存非常小,你永远不会注意到它。另一方面,使用vector
有无数的优点。事实上,你可能会编写更快(可能更节省内存)的代码,因为你将能够理解算法的大局并(安全地)朝着更好的算法推进。 - Aaron McDaid