C Primer 第9章 習題9 32

2021-08-26 17:05:57 字數 730 閱讀 5271

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...