c++ vector的容量增长方式

以前一直以为vector的capacity的增长方式是翻倍增长的,但是实验了一下,并不是所想的那样 *2增长。当然也是按照一定的规律去增长,具体是什么规律,不同的编译器应该有不同的实现吧。


代码1,初始大小是1:

#include 
#include 
#include 
#include 
#include 
using namespace std;

int main()
{
    vector vec(1) ;
    ofstream of;
    of.open("d:/out.txt",ios::out);
    if(of.bad())
    {
        cout<<"can not open file D:\\out.txt"<


输出1:

1
2
3
4
6
9
13
19
28
42
63
94
141
211
316
474
711
1066
1599
2398
3597
5395
8092

如果初始大小设为11,那么输出又会是:

输出2:

11
16
24
36
54
81
121
181
271
406
609
913
1369
2053
3079
4618
6927


以上输出在VS2010 和 mingw g++下面测试,结果均一样, 可见在mingw g++ 下和 VS2010下 vector的capacity增长并不是翻倍方式的。




你可能感兴趣的:(C++)