类私有成员C ++的动态内存分配与std :: vector

Dan*_*que 0 c++ vector heap-memory

虽然学习C ++我一般(经常)会遇到以下的建议:“避免动态内存分配的多,您可以 ;使用std ::向量,而不是因为他们处理这个问题你。”

所以我的问题是:什么时候必须使用动态内存分配?我完成的所有练习(我只是一个初学者)都容易使用std::vector;但是,我的讲师强迫我们将动态内存用于简单的类(例如矩阵,几何向量等)和delete[]析构函数中。

到目前为止,我发现的唯一优势new;delete[];(或者至少是我告诉我的自我,以便觉得使用动态内存值得)是使用移动复制和移动分配。

Eri*_*che 5

std::vector还可以在后台进行动态内存分配(通过使用new运算符)。复制和移动的分配也是定义std::vector,你可以看到这里,所以没有,如果你自己动手完成它获得速度。

可能您的问题是指您何时应该手动分配内存(通过显式使用newdelete),而不是依赖于另一个类(例如vector)为您完成分配。

这个问题的“现代C ++”答案是永远不要手工进行内存管理。如果std::vector做这项工作,请改用它。如果您需要分配单个项目,请使用std::unique_ptr