c++ - 如何为vector of vector预留内存

标签 c++

假设

vector<vector<shared_ptr<Base>>> vec
vec.reserve(100)
vec[0].reserve(20)  // Error : vector subscript out of range

我正在尝试为外部 vector 和内部 vector 保留内存。 我知道 vec 是空的,所以我不能为内部 vector 保留内存。之后我只能resize()shr​​ink_to_fit()。但是,使用 resize()shr​​ink_to_fit() 是无用的,因为那不是我想要做的。

为内部 vector 预留内存的目的是试图分配好内存以便之后更快地搜索内部元素。我只是想知道如果我不预留内存,预分配的内存又贵又乱。

我想问:

  1. 有没有办法为内部 vector 保留内存
  2. 我的“担心内存分配不当会导致不为 vector 保留内存”的概念是否正确?

抱歉我的英语不好,我正在使用 VC++ 2010。

最佳答案

您不能为内部外部 vector 保留内存...内部 vector 不会被构造如果你我们只在外部 vector 中保留空间。您可以调整外部 vector 的大小,然后对其每个元素进行保留,或者您可以在添加内部 vector 时对其进行保留。

关于c++ - 如何为vector of vector预留内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16220915/

相关文章:

C++ 唯一元素的数量

c++ - 未初始化对象列表

c++ - 使用 boost::asio 进行简单的 udp 通信

c++ - 哪个是迭代字符串排列的最佳数据结构?

c++ - 将带有 malloc 指针的类分配到映射容器中

c++ - 多边形面积和多面体体积的精确公式

c++ - 忽略突出显示的文本调色板

c++ - OpenGL 何时完成函数中的指针?

C++ 代码无法编译 - 匹配参数列表

C++ Long Long INT - 64 位此限制仅用于 64 位操作系统吗?