我有一个std :: vector,我知道它永远不会增长 - 它总是有n元素(遗憾的n是,在编译时不知道所以我不能使用std :: array).我可以:
std::vector<blah> v(n);
Run Code Online (Sandbox Code Playgroud)
哪个正确设置其容量n.但是当我继续填写v时push_back,它会自动调整大小2n.
我意识到这是不成熟的优化,但它让我烦恼.有没有办法设置最大尺寸或什么?
Eti*_*tel 14
该构造函数不会设置向量的容量n,而是创建一个包含n使用blah默认构造函数构造的对象的向量 .对于具有Java或.NET背景的人来说,这可能会令人困惑,其中ArrayList和List<T>两者都有一个设置初始容量的构造函数.
解决方案是分两步完成:
std::vector<blah> v; // create an empty vector
v.reserve(n); // increase capacity
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1868 次 |
| 最近记录: |