第九章 9.3.4节练习 & 9.3.5节练习
来源:互联网 发布:Dijstra算法属于 编辑:程序博客网 时间:2024/05/16 01:44
练习9.27:
编写程序,查找并删除forward_list<int>中的奇数元素。
解答:
这段程序在本节已经给出来了,不过,forward_list是单向链表,比较特殊,所以这段程序还是值得花点时间看看的。
#include <iostream>#include <forward_list>using namespace std;int main(){forward_list<int> flst{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };auto prev = flst.before_begin();auto curr = flst.begin();while (curr != flst.end()){if (*curr % 2){curr = flst.erase_after(prev);}else{prev = curr;++curr;}}for (auto i : flst){cout << i << " ";}cout << endl;}
练习9.28:
编写函数,接受一个forward_list<string>和两个string共三个参数。函数应在链表中查找第一个string,并将第二个string插入到紧接着第一个string之后的位置。若第一个string未在链表中,则将第二个string插入到链表末尾。
解答:
#include <iostream>#include <forward_list>#include <string>using namespace std;void myFunc(forward_list<string>& flst, string str1, string str2){auto perv = flst.before_begin();auto curr = flst.begin();while (curr != flst.end()){if (*curr == str1){flst.insert_after(curr, str2);return;}perv = curr;++curr;}flst.insert_after(perv, str2);}int main(){forward_list<string> flist{ "apple", "melon", "pear", "banana" };myFunc(flist, "pear", "watermelon");for (auto i : flist){cout << i << " ";}cout << endl;myFunc(flist, "house", "pineapple");for (auto i : flist){cout << i << " ";}cout << endl;}
练习9.29:
假定vec包含25个元素,那么vec.resize(100)会做什么?如果接下来调用vec.resize(10)会做什么?
解答:
和314页list描述相似的处理方式。
#include <iostream>#include <vector>using namespace std;int main(){vector<int> vec(25, 99);cout << "Original vec vessel elements" << endl;for (auto i : vec){cout << i << " ";}cout << endl;vec.resize(100);cout << "Resize the vessel to 100, the elements" << endl;for (auto i : vec){cout << i << " ";}cout << endl;vec.resize(25);cout << "Resize the vessel to 25, the elements" << endl;for (auto i : vec){cout << i << " ";}cout << endl;}
练习9.30:
接受单个参数的resize版本对元素类型有什么限制(如果有的话)?
解答:
限制能想到的只有一个。
【引用】如果容器保存对的是类类型元素,且resize想容器添加新元素,则我们必须提供初始值,或者元素类型必须提供一个默认构造函数。
0 0
- 第九章 9.3.4节练习 & 9.3.5节练习
- 第九章 9.3.2节练习 & 9.3.3节练习
- 第九章 9.2.4节练习 & 9.2.5节练习
- 第九章 9.3.1节练习
- 第九章 9.3.6节练习
- 第九章 9.5.5节练习 & 9.6节练习
- 第九章 9.4节练习
- 第九章 9.1节练习 & 9.2节练习
- 第九章 9.2.2节练习 & 9.2.3节练习
- 第九章 9.5.1节练习 & 9.5.2节练习
- 第九章 9.2.1节练习
- 第九章 9.2.7节练习
- 第九章 9.5.3节练习
- 编程练习 第九章
- 第九章练习
- 第九章练习总结
- C primer plus 第九章 练习5:
- C primer plus 第九章 练习4:
- HDU 3315 My Brute(二分图最优匹配:优先用原匹配边)
- C-多线程-代码-CreateThread
- 广义表的存储结构(广义表的递归算法,复制广义表,求广义表的深度)
- LeetCode 4Sum
- c语言数据类型
- 第九章 9.3.4节练习 & 9.3.5节练习
- hadoop in action第四章代码总结(hadoop 0.20的API)
- 使用图灵机器人笑话功能提高微信公众帐号活跃度
- UIScrollView实现自动轮播,可用于广告图片轮播
- FreeBSD10的pkg问题及ports下载优化
- 根据内核打印的段错误信息分析驱动程序——根据出错PC来分析
- android异步请求asyncTask使用—分析getResponseCode()阻塞
- HDU 4971 A simple brute force problem.(dp)
- HTTPURLConnection详解