我必须对这样的指针列表进行排序:
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
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)