一个类似于动态数组的C ++容器?

时间:2014-09-06 07:12:22

标签: c++ c++11 vector containers dynamic-arrays

this set of slides中,作者强烈建议避免使用C ++程序中的指针。特别是在幻灯片6中,建议使用向量而不是动态数组。虽然我相信矢量使用起来更安全,例如它们在异常发生时避免内存泄漏,但它们有额外的内存开销。 This post表示向量最多可以消耗向量中现有元素的两倍。不幸的是,这个功能导致我的程序在我的系统中以有限的可用内存量中止。

是否存在类似于动态数组的C ++容器,在运行时获取固定(或很少变化)的元素数量,并提供与容器相同的安全性?我能找到的最接近的东西(here)是array,它需要template中提供的编译时指定大小。

2 个答案:

答案 0 :(得分:4)

您可以使用std::unique_ptr

的数组专精
std::unique_ptr<int[]> arr(new int[5]);

这将为您安全地管理内存。

答案 1 :(得分:4)

如果您知道固定大小,只需在reserve(n)上调用vector即可。虽然不能保证不使用更多空间,但我不知道任何实现不仅仅为该数量的元素分配空间(当然,假设它大于当前capacity()