よく嵌るのでメモ。 大きなものから出てくる 比較関数の実装法は頭に入れておく コンパイラのエラーメッセージに期待しない priority_queue<Hoge> pq; のように使うHogeクラス では、デフォルトでは比較に std::less<Hoge> が使われるので operator< の実装が必要。 class Hoge { ... bool operator<(const Hoge &a) const; }; 二つのconst を忘れると悲惨なことになります。 比較関数の部分を分離しようとすると、「型」が必要なので普通の関数でなくファンクタクラスが必要。 struct Compare : public binary_function<Hoge,Hoge,bool> { bool operator()(const Hoge &a, const Hoge &b) { ... } };