题目描述查找和排序 题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩 示例: 从高到低 成绩 从低到高 smith 67 jack 70 Tom 70
输入描述:输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开 输出描述:按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开 示例:输入: 3 输出: fang 90 解决思路
2、利用stable_sort() 来根据进行升序,降序排列。 1 #include <iostream> 2 #include <algorithm> 3 #include <string> 4 #include <vector> 5 using namespace std; 6 7 typedef struct stu 8 { 9 string name; 10 int grade; 11 }student; 12 13 int cmp1(student a,student b) 14 { 15 return a.grade > b.grade; 16 } 17 18 int cmp2(student a,student b) 19 { 20 return a.grade < b.grade; 21 } 22 23 24 int main() 25 { 26 int count=0,cmp=0; 27 student s; 28 int grade; 29 string name; 30 int n = count; 31 while(cin >> count >> cmp) 32 { 33 vector<student> stuVect; 34 while(count--) 35 { 36 cin >> name >> grade; 37 s.name = name; 38 s.grade =grade; 39 stuVect.push_back(s); 40 } 41 if(cmp == 0) 42 stable_sort(stuVect.begin(),stuVect.end(),cmp1); 43 if(cmp == 1) 44 stable_sort(stuVect.begin(),stuVect.end(),cmp2); 45 46 for(auto it = stuVect.begin(); it != stuVect.end(); it ) 47 cout << it -> name << ' ' << it -> grade << endl; 48 } 49 return 0; 50 } summary 遇到了很多的麻烦,通过这道题目我也认识到了很多新的知识点 1、sort() 函数 与 stable_sort() 函数
在这里要注意一下函数的 cmp 参数: 如果是没有定义小于运算的数据类型,或者想改变排序的顺序,就要用到第三参数——比较函数。 比较函数是一个自己定义的函数,返回值是bool型或整型,它规定了什么样的关系才是“小于”。想把刚才的整数数组按降序排列,可以先定义一个比较函数cmp 1 bool cmp(int a,int b) 2 { 3 return a>b; 4 } 2、vector 容器的应用
3、访问vector 1 //使用迭代器将容器中数据输出 2 vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素 3 for(it=obj.begin();it!=obj.end();it ) 4 { 5 cout<<*it<<" "; 6 }
来源:https://www./content-4-383501.html |
|