第九章 9 4節練習

2021-06-23 08:22:41 字數 921 閱讀 4285

練習9.35:

解釋乙個vector的capacity和size有何區別。

解答:【引用】容器的size是指它已經儲存的元素數目;而capactiy則是在不分配新的記憶體空間的前提下最多可以儲存多少元素。

練習9.36:

乙個容器的capacity可能小於他的size嗎?

解答:從定義上來說,這個是不可能的。

練習9.37:

為什麼list或array沒有capacity成員函式?

解答:array不需要,因為它的容積是固定的,不能在初始化之後再次改變它的容積。

list容積的擴張,只需要將尾指標指向下乙個節點就可以,插入/刪除節點很方便。

練習9.38:

編寫程式,**你的標準庫視線中。vector是如何增長的。

解答:我這裡使用的是vs2013,沒看出來什麼規律,應該也是有具體公式。

可以用書上的例子來進行驗證。

練習9.39:

解釋下面程式片段做了什麼:

vectorsvec;

svec.reserve(1024);

string word;

while (cin >> word)

svec.resize(svec.size() + svec.size() / 2);

解答:將輸入的單詞放到vector容器裡面。並對容器進行擴充。

練習9.40:

如果上一題中的程式讀入了256個詞,在resize之後容器的capacity可能是多少?如果讀入了512個、1000個或1048個詞呢?

解答:256 --> 1024

512 --> 1024

1000 --> 可能大於1024,vs2013給出來的值是1536

1048 --> 大於1048的值,vs2013給出來的值是2304

第九章 9 2 1節練習

練習 9.3 構成迭代器範圍的迭代器有何限制?解答 這裡首先要清楚什麼是迭代器範圍 引用 乙個迭代器範圍 iterator range 由一對迭代器表示,兩個迭代器分別指向同乙個容器中的元素或者是尾元素之後的位置 one past the last element 再去 限制 引用 對構成範圍迭代器...

第九章 9 2 7節練習

練習 9.15 編寫程式,判定兩個vector是否相等。解答 include include using namespace std int main vectoriv1 iv o.begin iv o.end vectoriv2 iv o.begin 1,iv o.end cout iv o iv...

第九章 9 3 6節練習

練習9.31 第316也中刪除偶數值的元素並複製技術值元素的程式不能用於list或forward list。為什麼?修改程式,使之也能用於這些型別。解答 首先,316頁中的程式主要做的是插入和刪除操作,這個操作對於鍊錶容器來說不影響其迭代器和指標。不過,插入和刪除操作會讓其他容器的迭代器指標失效。所...