C++ Primer 练习 10.32 题
来源:互联网 发布:android蓝牙源码分析 编辑:程序博客网 时间:2024/06/13 07:26
第十章 10.32题:
题目:重写1.6节(第21页)中的书店程序,使用一个vector保存交易记录,使用不同算法完成处理。使用sort和10.3.1(第345页)中的compareIsbn函数来排序交易记录,然后使用find和accumulate求和。
先来解释一下这一题的题目: 。。。无解。
其实 我阅题能力真的是为0.一时间还看不出啥来。
先定义vector来保存Sales_item的容器,这个很好理解嘛。
再来是 使用不同算法完成处理:也就是随便用一种方式来保存一个交易记录。
还有就是sort 和 一个谓词 ,来排序vector里的元素 根据isbn()打字典顺序,这个很简单。
最后用find和accumulate 来 ,这个当时还想了一下。
首先要先找到一个元素,也就是要提供一个ISBN名字。才能下一步的计算。当时我惊呆了,还有这种操作!!
find的 确实写不出啊,怎么找到,提供一个ISBN的话 也不行啊。算法不允许有这种操作。
所以只能用find_if , 喂,喂,喂 ,犯规了 ,(逃
可是我真的想不出了啊 所以还是犯规一次,其实还有其他更简单的实现方法。( •̀ ω •́ )y 算了!
下面 高能 预警!!!!!!
代码来了 各位大大可以参考一下。
#include <iostream>#include <vector>#include <string>#include <functional>#include <algorithm>#include <numeric>#include <iterator>#include "Sales_item.h"#include <fstream>using namespace std;bool comIsbn(Sales_item &s1, Sales_item &s2){return s1.isbn() < s2.isbn();}int main(){istream_iterator<Sales_item> sa_in(cin),eof;vector<Sales_item> sales(sa_in,eof);//未排序前for_each(sales.cbegin(), sales.cend(), [](const Sales_item &s) {cout << s << '\n'; });sort(sales.begin(), sales.end(),comIsbn);cout << endl;//排序后for_each(sales.cbegin(), sales.cend(), [](const Sales_item &s) {cout << s << '\n'; });//使用find_if 先找到 第一个给定的ISBN 然后返回该元素的迭代器auto begin = find_if(sales.cbegin(), sales.cend(), [](const Sales_item &s) {return s.isbn() == "hh"; }); //找到第一个//之后就从这个迭代的位置找到第一个不等于ISBN的元素,然后返回迭代器auto end = find_if(begin, sales.cend(), [](const Sales_item &s) {return s.isbn() != "hh"; }); // 找到在第一个之后不一样的值之后的cout << endl;//再次打印表示正确for_each(begin,end, [](const Sales_item &s) {cout << s << '\n'; }); //这是查找的值 稳!cout << endl;//之后从这两个迭代器范围计算求和cout << accumulate(begin,end,Sales_item("hh")) << endl; //求和之后的值打印出来return 0;}
有什么错误的地方还是说这个答案就是错误的(T_T) 请立即联系我!
阅读全文
0 0
- C++Primer第五版 练习10.32解答
- C++Primer 动态内存练习 12.6题
- C++Primer 练习 12.7
- c++primer练习10.9
- c++primer练习10.11
- c++primer练习10.13
- c++primer练习10.14
- c++primer练习10.15
- c++primer练习10.18
- c++primer 练习11.9
- c++primer练习11.33
- c++Primer 练习2.41
- C++ Primer 练习 10.32 题
- C++Primer中文版中的练习
- C++primer 文本查询练习
- C++Primer练习3.13疑问?
- c primer 8.1练习答案
- C++Primer 练习9.44 解答
- Python Challenge:第三关:统计超长字符串中最少出现的字符
- Jquery.ajax终止之前的请求
- LeetCode 463: Island Perimeter(岛屿周长)
- FTPZilla Server 中文传输解决办法
- C语言枚举类型(Enum)
- C++ Primer 练习 10.32 题
- rsync用法
- Tomcat管理虚拟目录
- 如何给上传图片增加水印
- Appium环境搭建
- java中HashSet详解
- Kali渗透测试——HexInject
- OpenStack Newton版本部署---- 网络服务(neutron)(计算节点)
- OpenStack Newton版本部署---- 网络服务(neutron)(控制节点)