我的优先级队列声明为:
std::priority_queue<*MyClass> queue;
class MyClass {
bool operator<( const MyClass* m ) const;
}
Run Code Online (Sandbox Code Playgroud)
没有排序队列中的项目.
怎么了?我不想实现不同的(比较)类.
答案摘要:
问题是,指针地址是排序的.避免这种情况的唯一方法是"比较指针"的类.
现在实现为:
std::priority_queue<*MyClass, vector<*MyClass>, MyClass::CompStr > queue;
class MyClass {
struct CompStr {
bool operator()(MyClass* m1, MyClass* m2);
}
}
Run Code Online (Sandbox Code Playgroud)