-
练习10.1
10.1程序代码 -
练习10.2
10.2程序代码 -
练习10.3
10.3程序代码 -
练习10.4
会舍弃每个double中的小数部分,得到的结果是一个整数 -
练习10.5
会比较两个roster中对应C风格字符串的地址是否一致 -
练习10.6
10.6程序代码 -
练习10.7
(a)
vector<int> vec;
list<int> lst;
int i;
while(cin >> i)
lst.push_back(i);
vec.resize(lst.size());
copy(lst.cbegin(), lst.cend(), vec.begin());
(b)
vector<int> vec(10);
fill_n(vec.beigin(), 10, 0);
-
练习10.8
因为算法本身不改变容器大小,但是用back_inserter迭代器的内部操作,调用push_back来改变。 -
练习10.9
10.9程序代码 -
练习10.10
- 使算法独立于各种容器,甚至内置数组也能正常使用算法
- 改变容器大小会使迭代器失效
-
练习10.11
10.11程序代码 -
练习10.12
未更改Sales_data类
10.12 Sales_data.h程序代码
10.12 Sales_data.cpp程序代码
10.12 调用封装的类程序代码 -
练习10.13
10.13程序代码 -
练习10.14
[](int i,int j){ return i+j; }
-
练习10.15
10.15程序代码 -
练习10.16
10.16 biggies程序代码 -
练习10.17
未更改Sales_data类
10.17 Sales_data.h程序代码
10.17 Sales_data.cpp程序代码
10.17 lambda测试程序代码 -
练习10.18
10.18 biggies程序代码 -
练习10.19
10.19 biggies程序代码 -
练习10.20
10.20 biggies程序代码 -
练习10.21
10.21程序代码 -
练习10.22
10.22 biggies程序代码 -
练习10.23
接受的参数随着第一个可调用参数的不同而不同,是第一个可调用参数的参数数量+1 -
练习10.24
10.24程序代码 -
练习10.25
10.25程序代码 -
练习10.26
back_inserter 是在容器的尾部插入
front_inserter 是在容器的头部插入
inserter 是在容器的一个位置插入 -
练习10.27
10.27程序代码 -
练习10.28
10.28程序代码 -
练习10.29
10.29程序代码 -
练习10.30
10.30程序代码 -
练习10.31
10.31程序代码 -
练习10.33
10.33程序代码 -
练习10.34
10.34程序代码 -
练习10.35
10.35程序代码 -
练习10.36
10.36程序代码 -
练习10.37
10.37程序代码 -
练习10.38
- 输入迭代器
== != ++ 解引用和-> 仅用于读取 - 输出迭代器 ++ 解引用 仅用于输出
- 前向迭代器
== != ++ 解引用和-> 读取和输出 - 双向迭代器
== != ++ -- 解引用和-> 读取和输出 - 随机访问迭代器 == != ++ -- +n -n [n] it1-it2 解引用和-> 读取和输出
-
练习10.39
list的迭代器属于双向迭代器
vector上的迭代器属于随机访问迭代器 -
练习10.40
copy要求输入迭代器和输出迭代器
reverse要求双向迭代器
unique要求前向迭代器 -
练习10.41
replace(beg, end, old_val, new_val);
在[beg, end)中用新值替换旧值
replace_if(beg, end, pred, new_val);
在[beg, end)中调用pred非0的用新值替换旧值
replace_copy(beg, end, dest, old_val, new_val);
在[beg, end)中用新值替换旧值,复制到dest中
replace_copy_if(beg, end, dest, pred, new_val);
在[beg, end)中调用pred非0的用新值替换旧值,复制到dest中 -
练习10.42
10.42 用list改写elimDups程序代码