Skip to content

Latest commit

 

History

History
200 lines (149 loc) · 5.01 KB

chapter-9-answer.md

File metadata and controls

200 lines (149 loc) · 5.01 KB
  • 练习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;
    }