9.32 解釋下面程式的實現的功能:
vectorsvec;
svec.reserve(1024);
string text_word;
while(cin>>text_word)
sevc.push_back(text_word);
svec.resize(svec.size()+svec.size()/2);
如果該程式讀入了256個單詞,在調整大小後,該容器的容量可能是多少?如果讀入512,或1000,或1048個單詞呢?
【解答】
該程式段的功能是:建立空的vector物件後,將其容量設為1024個元素,然後從標準輸入裝置輸入一系列單詞,最後將該vector物件大小調整為輸入單詞個數的3/2.
如果讀入256個單詞:size:256,capacity:1024,沒有超出已分配的容量
如果讀入512個單詞:size:512,capacity:1024,沒有超出已分配的容量
如果讀入1000個單詞:size:1000,capacity:1536,調整大小之後,需要1500個元素空間,超過已分配空間1024,所以該容器應大與1024,可能為1024+1024/2=1536
如果讀入1048個單詞:size:1048,capacity:2304,用完已分配的空間(1024),該容器可能會增長到1536,但調整大小後,需要1572個元素空間,超過1536,因此會從新分配,容量可能會增長1536/2=768,所以調整為1536+768=2304
C Primer 第9章 習題9 32
9.32 解釋下面程式的實現的功能 vectorsvec svec.reserve 1024 string text word while cin text word sevc.push back text word svec.resize svec.size svec.size 2 如果該程式讀入...
C Primer 第9章 習題9 41
已知有如下string物件 string generic1 dear ms daisy string generic2 mrsmsmisspeople 編寫程式實現下面函式 string greet string form,string lastname,string title,string si...
C primer第9章習題解答
將字串作為引數傳遞給char型陣列的正確做法 void setgolf golf g,const char name,int hc setgolf gf1,sadas 3 int setgolf golf g 這個函式原型很重要 cout bye return 0 void strcount con...