假设
vector<vector<shared_ptr<Base>>> vec
vec.reserve(100)
vec[0].reserve(20) // Error : vector subscript out of range
我正在尝试为外部 vector 和内部 vector 保留内存。
我知道 vec
是空的,所以我不能为内部 vector 保留内存。之后我只能resize()
或shrink_to_fit()
。但是,使用 resize()
或 shrink_to_fit()
是无用的,因为那不是我想要做的。
为内部 vector 预留内存的目的是试图分配好内存以便之后更快地搜索内部元素。我只是想知道如果我不预留内存,预分配的内存又贵又乱。
我想问:
- 有没有办法为内部 vector 保留内存
- 我的“担心内存分配不当会导致不为 vector 保留内存”的概念是否正确?
抱歉我的英语不好,我正在使用 VC++ 2010。
最佳答案
您不能为内部 和外部 vector 保留内存...内部 vector 不会被构造如果你我们只在外部 vector 中保留空间。您可以调整外部 vector 的大小,然后对其每个元素进行保留,或者您可以在添加内部 vector 时对其进行保留。
关于c++ - 如何为vector of vector预留内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16220915/