如何为向量的向量保留内存

bsc*_*ng5 2 c++

假使,假设

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

我试图为外部向量和内部向量保留内存。我知道它vec是空的,所以我无法为内部向量保留内存。我只能resize()shrink_to_fit()之后。然而,使用resize()orshrink_to_fit()是没有用的,因为这不是我想要做的。

为内部向量保留内存的目的是尝试很好地分配内存,以便以后更快地搜索内部元素。我只是想知道如果我不保留内存,预先分配的内存既昂贵又混乱。

我想问一下 :

  1. 有没有办法为内部向量保留内存
  2. 我的“在没有为向量保留内存的情况下会导致内存分配错误”的概念是否正确?

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

Ton*_*roy 5

您无法为内部向量外部向量保留内存...如果您仅在外部向量中保留空间,则内部向量不会被构造。您可以调整外部向量的大小,然后为其每个元素进行保留,或者您可以在添加内部向量时对其进行保留。