以前一直以為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系列的機器,跨硬體平台是這個問題的首先要考慮到的因素。在乙個物質極大豐富的年代,除非無路可退,否則我們堅決不...