自定义类的sort()有关问题
自定义类的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里面了。
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; }