在学习 c++ 时,我通常(非常经常)遇到以下建议:“尽可能多地避免动态内存分配;使用 std::vectors 代替,因为它们会为您处理”。
所以我的问题是:我什么时候必须使用动态内存分配?使用 std::vector
,我完成的所有练习(我只是初学者)都容易得多;尽管如此,我的讲师还是强制我们对简单类(如矩阵、几何 vector 等)使用动态内存,并在析构函数中使用 delete[]
。
到目前为止,我为 new;delete[];
找到的唯一优势(或者至少我告诉自己的是为了觉得值得使用动态内存)是使用移动复制并移 Action 业。
最佳答案
std::vector
还在幕后进行动态内存分配(通过使用 new
运算符)。
还为 std::vector
定义了复制和移动赋值,如您所见 here ,因此如果您手动操作,则不会增加速度。
您的问题可能是指什么时候应该手动分配内存(通过显式使用new
和delete
),而不是依赖另一个类(例如 vector )为您完成。
“现代 C++”对这个问题的回答是从不手动进行内存管理。
如果一个 std::vector
完成了这项工作,那么就使用它。如果需要分配单个项目,则使用 std::unique_ptr
.
关于c++ - 类私有(private)成员 C++ 的动态内存分配与 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023996/