欢迎来到天天文库
浏览记录
ID:58386448
大小:437.00 KB
页数:50页
时间:2020-09-07
《C++实用技巧与模版库.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章C++实用技巧与模版库在本章中将介绍各种各样实用的提高我们编程效率的小技巧和模版库。其中绝大多数依靠C++自带类和函数实现。第一节排序算法排序算法为竞赛中最常用的算法之一,我们可以利用C++自带的库函数进行排序。使用排序算法必须包含algorithm头文件自带排序算法的一般形式为://将数组arr的下标为m的元素到下标为n-1的元素进行从小到大排序sort(arr+m,arr+n);sort(arr+m,arr+n,comp);//与sort(arr+m,arr+n);相比,这个//写法可以自己定义排序的规则//其中,comp为自定义的函数对于sort(
2、arr+m,arr+n)我们举个简单的例子://这个程序实现从键盘读入10个数,然后从小到大输出的功能#include#includeusingnamespacestd;inta[10];intmain(){for(inti=0;i<10;++i)cin>>a[i];sort(a+0,a+10);for(inti=0;i<10;++i)cout<3、用sort(arr+n,arr+m,comp)之前我们需要自己写个comp函数。从大到小排序的comp函数可以这样写:intmy_comp(constint&a,constint&b){returna>b;//在两元素相同时一定要返回0或者false}//comp函数的名字是由我们自己决定的,例如可以叫//cat_cat,dog_dog等等//程序实现从键盘读入10个数,然后从大到小输出的功能#include#includeusingnamespacestd;inta[10];intmy_comp(constint&a4、,constint&b){returna>b;//如果a>b则返回1,否则返回0}intmain(){for(inti=0;i<10;++i)cin>>a[i];sort(a+0,a+10,my_comp);for(inti=0;i<10;++i)cout<5、第二个成员为第二关键字,……,第N个元素为第N关键字,然后从小到大排序。例如我们要将学生的成绩从大到小排序,当成绩相同时,根据姓名字典序小的优先的规则排进行序。显然我们无法采用默认规则进行排序。这时我们可以定义这样的comp:intscore_comp(conststudent&a,conststudent&b){if(a.score>b.score)return1;if(a.score6、老师发现学生数目庞大,所以找来了会编程的你,并且它给你了全部同学的分数,希望你能按如下规则排序:1.分数高的排在前面;2.如果分数相同,就把名字字典序低的放在前面。【输入格式】第一行一个整数n接下来n行每行一个学生名字和一个分数。【输出格式】每行一个名字和一个分数【输入样例】3Xiaoxiao396Yingmo405Diyucailang399【输出样例】Yingmo405Diyucailang399Xiaoxiao396【参考程序】#include#include#includeusingnamesp7、acestd;structstudent{intscore;stringname;}a[100];intn;intscore_comp(conststudent&a,conststudent&b){if(a.score>b.score)return1;if(a.score>n;for(inti=0;i>a[i].name;cin>>a[i].score;}sort(a+0,a+n,score_comp);fo8、r(inti=0;i
3、用sort(arr+n,arr+m,comp)之前我们需要自己写个comp函数。从大到小排序的comp函数可以这样写:intmy_comp(constint&a,constint&b){returna>b;//在两元素相同时一定要返回0或者false}//comp函数的名字是由我们自己决定的,例如可以叫//cat_cat,dog_dog等等//程序实现从键盘读入10个数,然后从大到小输出的功能#include#includeusingnamespacestd;inta[10];intmy_comp(constint&a
4、,constint&b){returna>b;//如果a>b则返回1,否则返回0}intmain(){for(inti=0;i<10;++i)cin>>a[i];sort(a+0,a+10,my_comp);for(inti=0;i<10;++i)cout<5、第二个成员为第二关键字,……,第N个元素为第N关键字,然后从小到大排序。例如我们要将学生的成绩从大到小排序,当成绩相同时,根据姓名字典序小的优先的规则排进行序。显然我们无法采用默认规则进行排序。这时我们可以定义这样的comp:intscore_comp(conststudent&a,conststudent&b){if(a.score>b.score)return1;if(a.score6、老师发现学生数目庞大,所以找来了会编程的你,并且它给你了全部同学的分数,希望你能按如下规则排序:1.分数高的排在前面;2.如果分数相同,就把名字字典序低的放在前面。【输入格式】第一行一个整数n接下来n行每行一个学生名字和一个分数。【输出格式】每行一个名字和一个分数【输入样例】3Xiaoxiao396Yingmo405Diyucailang399【输出样例】Yingmo405Diyucailang399Xiaoxiao396【参考程序】#include#include#includeusingnamesp7、acestd;structstudent{intscore;stringname;}a[100];intn;intscore_comp(conststudent&a,conststudent&b){if(a.score>b.score)return1;if(a.score>n;for(inti=0;i>a[i].name;cin>>a[i].score;}sort(a+0,a+n,score_comp);fo8、r(inti=0;i
5、第二个成员为第二关键字,……,第N个元素为第N关键字,然后从小到大排序。例如我们要将学生的成绩从大到小排序,当成绩相同时,根据姓名字典序小的优先的规则排进行序。显然我们无法采用默认规则进行排序。这时我们可以定义这样的comp:intscore_comp(conststudent&a,conststudent&b){if(a.score>b.score)return1;if(a.score6、老师发现学生数目庞大,所以找来了会编程的你,并且它给你了全部同学的分数,希望你能按如下规则排序:1.分数高的排在前面;2.如果分数相同,就把名字字典序低的放在前面。【输入格式】第一行一个整数n接下来n行每行一个学生名字和一个分数。【输出格式】每行一个名字和一个分数【输入样例】3Xiaoxiao396Yingmo405Diyucailang399【输出样例】Yingmo405Diyucailang399Xiaoxiao396【参考程序】#include#include#includeusingnamesp7、acestd;structstudent{intscore;stringname;}a[100];intn;intscore_comp(conststudent&a,conststudent&b){if(a.score>b.score)return1;if(a.score>n;for(inti=0;i>a[i].name;cin>>a[i].score;}sort(a+0,a+n,score_comp);fo8、r(inti=0;i
6、老师发现学生数目庞大,所以找来了会编程的你,并且它给你了全部同学的分数,希望你能按如下规则排序:1.分数高的排在前面;2.如果分数相同,就把名字字典序低的放在前面。【输入格式】第一行一个整数n接下来n行每行一个学生名字和一个分数。【输出格式】每行一个名字和一个分数【输入样例】3Xiaoxiao396Yingmo405Diyucailang399【输出样例】Yingmo405Diyucailang399Xiaoxiao396【参考程序】#include#include#includeusingnamesp
7、acestd;structstudent{intscore;stringname;}a[100];intn;intscore_comp(conststudent&a,conststudent&b){if(a.score>b.score)return1;if(a.score>n;for(inti=0;i>a[i].name;cin>>a[i].score;}sort(a+0,a+n,score_comp);fo
8、r(inti=0;i
此文档下载收益归作者所有