【C++ Primer Plus习题】16.10

news/2024/9/21 1:10:33/

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

问题:

在这里插入图片描述

解答:

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <memory>
using namespace std;struct Review
{string title;int rating;int price;
};bool operator<(const shared_ptr<Review>& p1, const shared_ptr<Review>& p2);
bool FillReview(Review& rr);
void ShowReview(const shared_ptr<Review>& p);
bool worseThan(const shared_ptr<Review>& p1, const shared_ptr<Review>& p2);
bool expenThan(const shared_ptr<Review>& p1, const shared_ptr<Review>& p2);int main()
{vector<shared_ptr<Review>>books;Review temp;while (FillReview(temp)){shared_ptr<Review>pd(new Review(temp));books.push_back(pd);}if (books.size() > 0){cout << "Choose the way to sort: "<< "r:rate, s: rate r, p:price, d:price, d:price r, q:quit\n";char choice;while (cin >> choice && choice != 'q'){switch (choice){case 'r':sort(books.begin(), books.end(), worseThan);break;case 's':sort(books.rbegin(), books.rend(), worseThan);break;case 'p':sort(books.begin(), books.end(), expenThan);break;case 'd':sort(books.rbegin(), books.rend(), expenThan);break;default:break;}for_each(books.begin(), books.end(), ShowReview);cout<<"Please choose the way to sort: "<< "r:rate, s: rate r, p:price, d:price, d:price r, q:quit\n";}}return 0;
}bool operator<(const shared_ptr<Review>& p1, const shared_ptr<Review>& p2)
{if (p1->title < p2->title)return true;else if (p1->title == p2->title && p1->rating < p2->rating)return true;elsereturn false;
}
bool FillReview(Review& rr)
{cout << "Enter book title (quit to quit): ";getline(cin, rr.title);if (rr.title == "quit" || rr.title == "")return false;cout << "Enter book rating: ";cin >> rr.rating;if (!cin)return false;cout << "Enter book price: ";cin >> rr.price;if (!cin)return false;while (cin.get() != '\n'){continue;}return true;
}
void ShowReview(const shared_ptr<Review>& p)
{cout << p->rating << "\t" << p->title << "\t" << p->price << endl;
}
bool  worseThan(const shared_ptr<Review>& p1, const shared_ptr<Review>& p2)
{if (p1->rating < p2->rating)return true;elsereturn false;
}
bool expenThan(const shared_ptr<Review>& p1, const shared_ptr<Review>& p2)
{if (p1->price < p2->price)return true;elsereturn false;
}

运行结果:
在这里插入图片描述

考查点:

  • vector容器
  • 智能指针
  • sort()
  • 迭代器
  • for_each()

2024年9月20日21:49:47


http://www.ppmy.cn/news/1528164.html

相关文章

红黑树构建模拟实现

目录 一.红黑树概述 二.红黑树的性质 ​编辑 三.构建红黑树模拟实现 插入新节点情况分析 情况一、cur为红色&#xff0c;parent为红色&#xff0c;grandfather为黑色&#xff0c;uncle存在且为红 情况二、cur为红色&#xff0c;parent为红色&#xff0c;grandfather为黑色…

网络安全学习(五)Burpsuite实战

bp功能确实强大&#xff0c;记录一个bp手机验证码的实例。 当然&#xff0c;首先要打开bp&#xff0c;设置好浏览器的代理。 浏览器访问实例网址www.xxx.com&#xff08;隐藏真实网址&#xff09;。 真实网址有个注册功能&#xff0c;需要手机验证码。 好的&#xff0c;我们…

IO模型---BIO、NIO、IO多路复用、AIO详解

本篇将想给详细解释一下什么是BIO、NIO、IO多路复用以及AIO~ 同步的阻塞(BIO)和非阻塞(NIO)的区别 BIO&#xff1a;线程发来IO请求后&#xff0c;一直阻塞着IO线程&#xff0c;需要缓冲区这边数据准备好之后&#xff0c;才会进行下一步的操作。 举个&#x1f330;&#xff1…

回溯-数独-二维递归

1.递归函数以及参数 递归函数的返回值需要是bool类型&#xff0c;为什么呢&#xff1f; 因为解数独找到一个符合的条件&#xff08;就在树的叶子节点上&#xff09;立刻就返回&#xff0c;相当于找从根节点到叶子节点一条唯一路径&#xff0c;所以需要使用bool返回值。 2.递…

算法课习题汇总(2)

整数划分问题 将正整数n表示成一系列正整数之和&#xff0c;nn1n2…nk(n1>n2>…>nk,k>1)。正整数n的这种表示称为正整数n的划分。 思路&#xff1a; n表示待划分数&#xff0c;m表示最大减数。 #include<iostream> using namespace std;int q(int n, int…

王道408考研数据结构-串-第四章

4.2 串的模式匹配 4.2.1 简单的模式匹配算法 子串的定位操作通常称为串的模式匹配&#xff0c;它求的是子串(常称模式串)在主串中的位置。这里采用定长顺序存储结构&#xff0c;给出一种不依赖于其他串操作的暴力匹配算法。 int Index(SString s,SString T){int i1,j1;whil…

Redis 主从复制配置教程

1. 什么是 Redis 主从复制 Redis 主从复制&#xff08;Master-Slave Replication&#xff09;允许一个 Redis 实例作为主节点&#xff08;Master&#xff09;&#xff0c;多个 Redis 实例作为从节点&#xff08;Slave&#xff09;&#xff0c;从节点会自动同步主节点的数据&am…

认知小文2《成功之路:习惯、学习与实践》

内容摘要&#xff1a; 在这个充满机遇的时代&#xff0c;成功不再是偶然&#xff0c;而是可以通过培养良好习惯、持续学习和实践来实现的目标。    一、肌肉记忆&#xff1a;技能的基石 成功往往需要像运动员一样&#xff0c;通过日复一日的练习来形成肌肉记忆。无论是健身…