容器排序

本文介绍了一个基于图书借阅次数的图书推荐系统实现方法。通过定义比较函数对图书进行降序排序,然后从排序后的列表中选择借阅次数最多的前三本书进行推荐。此系统使用了快速排序算法,并利用map数据结构来确保每本书只被推荐一次。
 1 //用于sort中的比较函数,定义为ServiceImpl的静态成员函数,比较Book对象中的m_loan_times成员,
  降序排序,同时为了能访问Book类中的私有成员,在Book类中声明为友元函数
2 bool ServiceImpl::big_borrow(Book b1,Book b2) 3 { 4 if(b1.m_loan_times > b2.m_loan_times) 5 { 6 return true; 7 } 8 return false; 9 } 10 11 12 //推荐书籍 13 void ServiceImpl::recommend_book(void) 14 { 15 sort(books.begin(),books.end(),ServiceImpl::big_borrow);//调用系统的快速排序 16 17 //存放已经推荐的书籍 18 map<string,int>m; 19 20 cout << "最受欢迎的前三图书" << endl; 21 unsigned int i = 0; 22 int count = 0; 23 for(i = 0;i < books.size();i++) 24 { 25 if(3 < count) 26 { 27 break; 28 } 29 if(0 != m[books[i].m_name]) //当某本书已经被推荐了,map对应的值大于0,则不打印 30 { 31 continue; 32 } 33 ++m[books[i].m_name]; 34 35 cout << "书名:" << books[i].m_name << " 编号:" << books[i].m_id <<
        " 作者:" << books[i].m_author <<" 类型:" << books[i].m_type << endl; 36 37 ++count; 38 } 39 40 }

 

转载于:https://www.cnblogs.com/mingyoujizao/p/9534209.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值