首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

自定义类的sort()有关问题

2012-08-01 
自定义类的sort()问题class A{public:vectorA avoid sortA(vectorA&)private:int istring sdouble

自定义类的sort()问题
class A
{
public:
vector<A> a;
void sortA(vector<A>&);
private:
int i;
string s;
double d;

};
void A::sortA(vector<A>& a)
{
sort()
}
请问我想按照double d给存储A的vector<A> a降序排列 sortA()要怎么写;是否要重载〉?
是否是这样?
void operator>(A& a1); 还是A operator>(A& a1); 我想的是应该穿2个A对象 可是提示参数太多 求解谢谢

[解决办法]
一个参数应该是成员函数,两个参数应该设置为友元函数。
[解决办法]
如果想用stl::sort,重载<操作符
[解决办法]
降序排列也只要重载<就行了,需要返回值int
我试着写了一个,那个class A 中pubic的成员 vector<A> a;看着总觉得有点奇怪,所以我注释掉了,放到main里面了。

C/C++ code
#include <iostream>#include <vector>#include <algorithm>#include <iterator>#include <string>using namespace std;class A{public:    //vector<A> a;    A (int n=0,string str="",double dd=0.0):i(n),s(str),d(dd) {    }    void sortA(vector<A>&);    int operator < (const A& aa) {        if(i!=aa.i) {            return i>aa.i;        }else if(s!=aa.s) {            return s>aa.s;        }else {            return d>aa.d;        }    }    friend ostream& operator<< (ostream& os,const A& aa) {        return os << "(" << aa.i << "," << aa.s << "," << aa.d << ")";    }private:    int i;    string s;    double d;};void A::sortA(vector<A>& a){    vector<A>::iterator it1=a.begin();    vector<A>::iterator it2=a.end();    sort(it1,it2);}int main(void){    vector<A> a;    a.push_back(A(1,"bbb",1.1));    a.push_back(A(1,"aaa",1.2));    a.push_back(A(2,"ccc",1.3));    a.push_back(A(2,"ccc",1.1));    a.push_back(A(3,"aaa",1.1));    A obj;    obj.sortA(a);    copy(a.begin(),a.end(),ostream_iterator<A> (cout," "));    getchar();    return 0;} 

热点排行