C++Primer第五版 练习11.19(解答)
来源:互联网 发布:国家电网试题软件 编辑:程序博客网 时间:2024/06/14 04:55
练习11.19:定义一个变量,通过对11.2.2节(第378页)中的名为bookstore的multiset调用begin()来初始化这个变量。写出变量的类型,不要使用auto或decltype.
/**C++primer(第五版) *练习11.19*2015/10/8 *问题描述:练习11.19:定义一个变量,通过对11.2.2节(第378页)中的名为bookstore的multiset调用begin()来初始化这个变量。写出变量的类型,不要使用auto或decltype.*说明:如果你会做练习11.11,这道题你就明白怎么做了 *作者:Nick Feng *邮箱:nickgreen23@163.com */ /**C++Primer(第五版) *11.2.2节练习 *练习11.11 *问题描述:练习11.11:不使用decltype重新定义bookstore。* 说明:这道题是让你明白decltype(compareIsbn)*的类型究竟是什么,顺便复习了一下函数指针的内容 *作者:Nick Feng *邮箱:nickgreen23@163.com */ #include <iostream>#include <set> #include "Sales_data.h"using namespace std;bool compareIsbn(const Sales_data &lhs, const Sales_data &rhs){ return lhs.isbn() < rhs.isbn();}int main(){ //注释的地方为原始定义 //multiset<Sales_data,decltype(compareIsbn)*> bookstore(compareIsbn); bool (*pf)(const Sales_data &,const Sales_data &) = compareIsbn; //pf是指向compareIsbn函数的指针 //F是函数类型,不是指针,F*是一个带指针的复合类型,参考P223页 using F = bool(const Sales_data &,const Sales_data &); multiset<Sales_data,F*> bookstore(compareIsbn); multiset<Sales_data,F*>::iterator it = bookstore.begin(); //本题要求你做的东西 }
Sales_data.h
/**练习7.6 *2015/7、1 *问题描述:练习7.6:对于add, read和print,定义你自己的版本。 *功能:完善之前的类,定义成一个头文件 *作者:Nick Feng *邮箱:nickgreen23@163.com * */#ifndef SALES_DATA_H#define SALES_DATA_H#include <iostream>#include <string>using namespace std;struct Sales_data{ string bookNo; unsigned units_sold = 0; double revenue = 0.0; string isbn() const {return bookNo;} Sales_data& combine(const Sales_data&); double avg_price() const;}; double Sales_data::avg_price() const{ if(units_sold) return revenue/units_sold; else return 0;}Sales_data& Sales_data::combine(const Sales_data &rhs){ units_sold += rhs.units_sold; revenue += rhs.revenue; return *this; }Sales_data add(const Sales_data&, const Sales_data&);ostream &print(ostream&, const Sales_data&);istream &read(istream&, Sales_data&);istream &read(istream &is, Sales_data &item){ double price = 0; is >> item.bookNo >> item.units_sold >> price; item.revenue = price * item.units_sold; return is;}ostream &print(ostream &os, const Sales_data &item){ os << item.isbn() << " " << item.units_sold<< " " << item.revenue<< " " << item.avg_price(); return os; }#endif
0 0
- C++Primer第五版 练习11.19(解答)
- C++Primer 第五版 练习9.43 解答
- C++Primer 第五版 练习10.12解答
- C++Primer第五版 练习10.32解答
- C++Primer第五版 1.2节练习(解答)
- C++Primer第五版 练习11.3(解答)
- C++Primer第五版 练习11.4(解答)
- C++Primer第五版 练习11.7(解答)
- C++Primer第五版 练习11.8(解答)
- C++Primer第五版 练习11.9(解答)
- C++Primer第五版 练习11.10(解答)
- C++Primer第五版 练习11.11(解答)
- C++Primer第五版 11.2.3节练习(解答)
- C++Primer第五版 练习11.12(解答)
- C++Primer第五版 练习11.13(解答)
- C++Primer第五版 练习11.14(解答)
- C++Primer第五版 练习11.16(解答)
- C++Primer第五版 练习11.17(解答)
- Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射
- ffmpeg 最简单的转码封装mp4文件
- mysql导入数据
- 深刻认识CGI
- 软件工程习题2
- C++Primer第五版 练习11.19(解答)
- 反斜杠在C/C++中的作用
- TransactionScope使用说明
- Lisp---牛顿迭代法求平方根
- 一名平庸程序员的自白
- PDO实现用户数据的增删改查
- 504gateway time out nginx
- GitHub使用
- 【Android UI】CoordinatorLayout实现带图片可拉伸的Toolbar