https://github.com/jzplp/Cpp-Primer-Answer
-
練習9.1
(a) 先用一個vector尾插元素,讀取結束後再用sort排序。
(b) deque
(c) 先用一個vector尾插元素,讀取結束後再用sort排序。 -
練習9.2
std::list<std::deque<int>> l;
- 練習9.3
- 兩個迭代器必須都指向同一個容器中的元素或者是尾元素之後的位置
- 構成一個左閉合區間
while(iter1 != iter2)
- 練習9.7
std::vector<int>::const_iterator
- 練習9.8
使用 std::list<std::string>::value_type
寫入 std::list<std::string>::reference
-
練習9.9
返回的迭代器是否可以修改指向的元素內容。 -
練習9.10
it1 vector<int>::iterator
it2 vector<int>::const_iterator
it3 vector<int>::const_iterator
it4 vector<int>::const_iterator
-
練習9.11
9.11程序代碼 -
練習9.12
接受一個容器的構造函數必須元素和容器類型都相同,接受迭代器的構造函數不要求類型相同,只要元素類型可轉換爲新構造的容器的元素類型即可。 -
練習9.13
9.13程序代碼 -
練習9.14
9.14程序代碼 -
練習9.15
9.15程序代碼 -
練習9.16
9.16程序代碼 -
練習9.17
c1和c2必須是同一種類型的容器,且保存同一種類型的元素,且元素類型是可比較的。 -
練習9.18
9.18程序代碼 -
練習9.19
除了類型變化,程序基本不需要做改變。
9.19程序代碼 -
練習9.20
9.20程序代碼 -
練習9.21
循環將每次在vector的頭部插入,每次插入vector都將移動所有元素 -
練習9.22
插入一次之後迭代器就失效了
修改:
vecor<int>::iterator iter = iv.begin(), mid = iv.begin() + iv.size()/2;
while(iter != mid)
if(*iter == some_val)
{
iter = iv.insert(iter, 2 * some_val);
mid = iv.begin() + iv.size()/2;
}
-
練習9.23
他們的值相同,都等於c中唯一的元素值 -
練習9.24
(不能正常執行)
9.24錯誤實驗程序代碼 -
練習9.25
如果elem1與elem2相等,則不會刪除元素,且返回當前位置的迭代器。
如果elem2是尾後迭代器,則返回尾後迭代器。
如果elem1與elem2都是尾後迭代器,則不會刪除元素,且返回尾後迭代器。 -
練習9.26
9.26程序代碼 -
練習9.27
9.27程序代碼 -
練習9.28
9.28程序代碼 -
練習9.29
vec中添加75個值初始化的元素。再刪去90個元素。 -
練習9.30
元素必須是內置類型或者有默認構造函數。 -
練習9.32
不合法,後置遞增運算符最好不要與同一對象在同一表達式中出現,其行爲未定義 -
練習9.33
迭代器失效,程序變爲死循環。
9.33錯誤程序代碼
但實際測試,程序結果正常。猜想可能是由於編譯器優化,或者存儲空間沒有重新分配所致。 -
練習9.34
程序會變爲死循環
9.34錯誤程序代碼 -
練習9.35
size指實際存儲的元素個數,capacity指的是分配的內存空間,大於等於size -
練習9.36
不可能 -
練習9.37
因爲list是鏈表,空間是在每個元素建立時分配的。 array是數組,空間是在array初始化時直接分配的,不能修改 -
練習9.38
在我的電腦的標準庫實現中,是以2的冪次增長的。
9.38程序代碼 -
練習9.39
先分配1024個空間,再讀取輸入存入sver中,如果輸入多於683個,那麼將擴大空間到輸入的1.5倍 -
練習9.40
讀入256個,capacity是1024
讀入512個,capacity是1024
讀入1000個,capacity是1500
讀入1048個,capacity是1572 -
練習9.41
9.41程序代碼 -
練習9.42
先用reserve分配至少100的空間 -
練習9.43
9.43程序代碼 -
練習9.44
9.44程序代碼 -
練習9.45
9.45程序代碼 -
練習9.46
9.46程序代碼 -
練習9.47
9.47找數字程序代碼
9.47找非數字程序代碼 -
練習9.48
325頁定義了好幾個name。
不管按照哪個name,返回值都是std::string::npos -
練習9.49
9.49程序代碼 -
練習9.52
9.52程序代碼