如何对c ++上的指针列表进行排序?

Ant*_*996 -1 c++ sorting list

我必须对这样的指针列表进行排序:

list< pair< MyClass*,double> * > * myList
Run Code Online (Sandbox Code Playgroud)

myClass代码:

class MyClass {
    private: 
        int id;
    public: 
        MyClass(int id){ 
            this.id=id;}
        ///...
    }
Run Code Online (Sandbox Code Playgroud)

所以,我必须命令myList中,以增加的MyClass ID. 示例:如果有的话

pair<MyClass*,double> * pair1=new pair<MyClass*,double>(new MyClass(1),1.0);
pair<MyClass*,double> * pair2=new pair<MyClass*,double>(new MyClass(2),1.0);
pair<MyClass*,double> * pair3=new pair<MyClass*,double>(new MyClass(3),1.0);
Run Code Online (Sandbox Code Playgroud)

我按顺序pair2,pair3,pair1添加到myList,在排序算法之后,我想要myList中的pair1,pair2,pair3.

如果不手动实现排序算法,我可以这样做吗?
谢谢你的回答:D

Aco*_*orn 5

std::list::sort与自定义二进制比较函数一起使用,类似于:

bool cmp(const pair< MyClass*,double> * &a, const pair< MyClass*,double> * &b)
{
    return a->first->getID() < b->first->getID();
}
Run Code Online (Sandbox Code Playgroud)

然后:

myList.sort(cmp);
Run Code Online (Sandbox Code Playgroud)

  • 你打败了我^^ +1 (2认同)
  • `std :: sort`需要随机访问迭代器,不能在`std :: list`上工作.您需要使用[`std :: list :: sort`](http://en.cppreference.com/w/cpp/container/list/sort). (2认同)