C++ //练习 10.17 重写10.3.1节练习10.12(第345页)的程序,在对sort的调用中使用lambda来代替函数compareIsbn。

本文主要是介绍C++ //练习 10.17 重写10.3.1节练习10.12(第345页)的程序,在对sort的调用中使用lambda来代替函数compareIsbn。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C++ Primer(第5版) 练习 10.17

练习 10.17 重写10.3.1节练习10.12(第345页)的程序,在对sort的调用中使用lambda来代替函数compareIsbn。

环境:Linux Ubuntu(云服务器)
工具:vim

 

代码块
/*************************************************************************> File Name: ex10.17.cpp> Author: > Mail: > Created Time: Sat 02 Mar 2024 08:11:38 PM CST************************************************************************/#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;struct Sales_data{Sales_data(const string &s, unsigned n, double p):bookNo(s), units_sold(n), price(p), revenue(p * n) {}Sales_data(): Sales_data("", 0, 0) {}Sales_data(string s): Sales_data(s, 0, 0) {}Sales_data(istream &);friend ostream &print(ostream&, const Sales_data&);friend istream &read(istream&, Sales_data&);string isbn() const;Sales_data& combine(const Sales_data&);double avg_price() const;string bookNo;unsigned units_sold = 0;double price = 0.0;double revenue = 0.0;
};Sales_data::Sales_data(istream &in){read(in, *this);
}string Sales_data::isbn() const{return this->bookNo;
}Sales_data& Sales_data::combine(const Sales_data &rhs){units_sold += rhs.units_sold;revenue += rhs.revenue;return *this;
}double Sales_data::avg_price() const{if(units_sold){return revenue / units_sold;}else{return 0;}
}Sales_data add(const Sales_data &sd1, const Sales_data &sd2){Sales_data t = sd1;t.combine(sd2);return t;
}ostream &print(ostream &output, const Sales_data &sd){output<<sd.bookNo<<" "<<sd.units_sold<<" "<<sd.price<<" "<<sd.revenue<<" "<<sd.avg_price()<<endl;return output;
}istream &read(istream &input, Sales_data &sd){input>>sd.bookNo>>sd.units_sold>>sd.price;sd.revenue = sd.price * sd.units_sold;return input;
}bool compareIsbn(const Sales_data &s1, const Sales_data &s2){return s1.isbn() < s2.isbn();
}int main(){vector<Sales_data> sales;Sales_data temp;cout<<"Enter sales data: "<<endl;while(read(cin, temp)){sales.push_back(temp);}cout<<endl;cout<<"Original sales data: "<<endl;for(const auto s : sales){print(cout, s);}cout<<endl;stable_sort(sales.begin(), sales.end(), [](const Sales_data &s1, const Sales_data &s2){ return s1.isbn() < s2.isbn(); });cout<<"New sort: "<<endl;for(const auto s : sales){print(cout, s);}cout<<endl;return 0;
}
运行结果显示如下

在这里插入图片描述

这篇关于C++ //练习 10.17 重写10.3.1节练习10.12(第345页)的程序,在对sort的调用中使用lambda来代替函数compareIsbn。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/769913

相关文章

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

使用Python实现一个简易计算器的新手指南

《使用Python实现一个简易计算器的新手指南》计算器是编程入门的经典项目,它涵盖了变量、输入输出、条件判断等核心编程概念,通过这个小项目,可以快速掌握Python的基础语法,并为后续更复杂的项目打下... 目录准备工作基础概念解析分步实现计算器第一步:获取用户输入第二步:实现基本运算第三步:显示计算结果进

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

python之uv使用详解

《python之uv使用详解》文章介绍uv在Ubuntu上用于Python项目管理,涵盖安装、初始化、依赖管理、运行调试及Docker应用,强调CI中使用--locked确保依赖一致性... 目录安装与更新standalonepip 安装创建php以及初始化项目依赖管理uv run直接在命令行运行pytho