类的sort排序用法

2129: 上机第二次考试第三题

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 243  Solved: 74
[Submit][Status][Web Board]

Description

给一个数组,数组每个元素都是字符串,使用插入排序,将此数组元素排序,排序规则是以字符串的ASCII码值之和作大小比较。要求定义一个类(MyString),数组每个元素都是MyString对象,重载关系运算符(<号 或>号)用于比较两个MyString的大小。

Input

一行表示有多少个测试例子 后面每个测试例子都有两行,一行表示单词个数,另一行只含英文单词与空格

Output

输出单词排序后的情况

Sample Input

2 5 windy snowy sunny rainy foggy 6 cherry banana orange litchi pomelo durian

Sample Output

foggy rainy windy sunny snowy  banana orange litchi durian pomelo cherry
#include<iostream>  
#include<cstring>  
#include<iomanip>  
#include<algorithm>  
using namespace std;  
#define pi 3.14159  
class mystring 
{ 
    char a[50]; 
    int sum; 
public: 
    void setmystring(char *b) 
    { 
        sum=0; 
    strcpy(a,b); 
    for(int i=0;i<=strlen(a);i++) 
        sum+=a[i]; 
    } 
    char *getname() 
    { 
        return a; 
    } 
    friend bool operator<(mystring a,mystring b) //类的sort排序,只要重载运算符即可,用友元函数或成员函数都可重载,只不过不能将参数定义为引用
    { 
        return a.sum<b.sum; 
    } 
}; 
int main() 
{ 
    int t; 
    cin>>t; 
    while(t--) 
    { 
        int n; 
        cin>>n; 
        char b[20][50]; 
        mystring ss[20]; 
        for(int i=0;i<n;i++) 
        { 
            cin>>b[i]; 
            ss[i].setmystring(b[i]); 
        } 
        sort(ss,ss+n); 
        for(int i=0;i<n;i++) 
        { 
            cout<<ss[i].getname()<<" "; 
        } 
        cout<<endl; 
    } 
} 
/************************************************************** 
    Problem: 2129 
    User: jk1_201330551105 
    Language: C++ 
    Result: Accepted 
    Time:0 ms 
    Memory:1484 kb 
****************************************************************/


您的回应...

也许你感兴趣

换一批

热门标签

更多