【发布时间】:2014-05-01 18:43:54
【问题描述】:
我有一些代码使用了数千个向量,每个向量只有 4 个条目,所以我想将每个向量的初始大小设置为 4,这样我就可以通过不保留未使用的内存来优化内存使用。
我试过保留方法:
vector<Foo> bar;
bar.reserve(10);
但它似乎扩展而不收缩,似乎也没有构造函数可以创建具有指定容量的向量。
还有 2 个额外问题:
默认初始容量是多少
我可以创建一个具有特定容量的向量吗?
【问题讨论】:
-
如果要设为4,为什么不设为4?
-
如果要缩小,请使用
shrink_to_fit() -
只有我一个人不明白
vector<Foo> bar; bar.reserve(4);有什么问题吗? -
@mmohab:如果这就是您所需要的,那么您的问题肯定不会用措辞来表明它。如果你想缩小向量的容量,你为什么要说初始化它?
-
想一想,如果考虑到向量的初始容量默认大于 4 的可能性,这个问题会很有意义。所以我只想说,虽然不能保证,但标准库的所有知名实现都使用0作为初始容量,你可以安全地使用
vector<Foo> bar; bar.reserve(4);。