c vector的容量增長方式

2021-06-11 08:11:22 字數 848 閱讀 3456

以前一直以為vector的capacity的增長方式是翻倍增長的,但是實驗了一下,並不是所想的那樣 *2增長。當然也是按照一定的規律去增長,具體是什麼規律,不同的編譯器應該有不同的實現吧。

**1,初始大小是1:

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

int main()

{ vectorvec(1) ;

ofstream of;

of.open("d:/out.txt",ios::out);

if(of.bad())

{cout<<"can not open file d:\\out.txt"<

輸出1:

12346913

1928

4263

94141

211316

474711

1066

1599

2398

3597

5395

8092

如果初始大小設為11,那麼輸出又會是:

輸出2:

11

1624

3654

81121

181271

406609

9131369

2053

3079

4618

6927

以上輸出在vs2010 和 mingw g++下面測試,結果均一樣, 可見在mingw g++ 下和 vs2010下 vector的capacity增長並不是翻倍方式的。

arm堆疊的增長方式

堆疊是一種資料結構,按先進後出 first in last out,filo 的方式工作,使用乙個稱作堆疊指標的專用暫存器指示當前的操作位置,堆疊指標總是指向棧頂。當堆疊指標指向最後壓入堆疊的資料時,稱為滿堆疊 full stack 而當堆疊指標指向下乙個將要放入資料的空位置時,稱為空堆疊 empt...

vector的capacity增長方式

vector的capacity增長方式 vector的capacity 呼叫返回vector中最大能夠儲存的元素個數,也即在下一次需要擴充容量之前能容納的元素個數。reserve會使容器在必要的時候增長,以便容納制指定數目的元素。例程 include include using namespace ...

棧的增長方向

如何判斷棧的增長方向?對於乙個用慣了i386系列機器的人來說,這似乎是乙個無聊的問題,因為棧就是從高位址向低位址增長。不過,顯然這不是這個問題的目的,既然把這個問題拿出來,問的就不只是i386系列的機器,跨硬體平台是這個問題的首先要考慮到的因素。在乙個物質極大豐富的年代,除非無路可退,否則我們堅決不...