C++ Primer 第五版 第九章 練習題編程題目答案

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
  1. 兩個迭代器必須都指向同一個容器中的元素或者是尾元素之後的位置
  2. 構成一個左閉合區間
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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章