我知道手动动态内存分配通常是一个坏主意,但有时它是否比使用 std::vector
更好的解决方案?
举一个粗略的例子,如果我必须存储一个 n
整数数组,其中 n
<= 16,比如说。我可以使用它来实现它
int* data = new int[n]; //assuming n is set beforehand
或使用向量:
std::vector<int> data;
使用 std::vector
绝对总是一个更好的主意,还是在实际情况下手动分配动态内存会是一个更好的主意,以提高效率?
原文由 Vivek Ghaisas 发布,翻译遵循 CC BY-SA 4.0 许可协议
最好使用
std::vector
/std::array
,至少在您可以 _最终证明_(通过分析)T* a = new T[100];
解决方案在您的具体情况下要快得多.这不太可能发生:vector
/array
是一个非常薄的层,围绕着一个普通的旧阵列。使用vector::at
进行边界检查会有一些开销,但您可以使用operator[]
来规避这一点。