c语言 指针 排序,c – 对指针列表进行排序

我再一次发现自己在C中完成了一些非常简单的任务.有时候我希望我可以在

java中从OO中学习我所知道的所有内容,因为我的问题通常都是从

Java开始思考.

无论如何,我有一个std :: list< BaSEObject *>我想排序.假设BaSEObject是:

class BaSEObject {

protected:

int id;

public:

BaSEObject(int i) : id(i) {};

virtual ~BaSEObject() {};

};

我可以使用比较器结构对指向BaSEObject的指针列表进行排序:

struct Comparator {

bool operator()(const BaSEObject* o1,const BaSEObject* o2) const {

return o1->id < o2->id;

}

};

它看起来像这样:

std::list mylist;

mylist.push_back(new BaSEObject(1));

mylist.push_back(new BaSEObject(2));

// ...

mylist.sort(Comparator());

// intentionally omitted deletes and exception handling

直到这里,一切都很好.但是,我介绍了一些派生类:

class Child : public BaSEObject {

protected:

int var;

public:

Child(int id1,int n) : BaSEObject(id1),var(n) {};

virtual ~Child() {};

};

class GrandChild : public Child {

public:

GrandChild(int id1,int n) : Child(id1,n) {};

virtual ~GrandChild() {};

};

所以现在我想按照以下规则排序:

>对于任何Child对象c和BaSEObject b,b< c

>要比较BaSEObject对象,请像以前一样使用其ID.

>要比较Child对象,请比较其变量.如果它们相等,则回退到规则2.

> GrandChild对象应该回退到Child行为(规则3).

我最初认为我可能会在比较器中做一些演员.但是,这会消除常数.然后我想可能我可以比较类型,但后来一切看起来都很乱,甚至都不正确.

我怎么能实现这种排序,仍然使用list< BaSEObject *> :: sort?

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值