STL などを使用して C++でs の最小ヒープ1を作成しようとしていますが、コンパレータが正しく比較されていないようです。以下は私の現在のコンパレータです:long
make_heap
struct greater1{
bool operator()(const long& a,const long& b) const{
return a>b;
}
};
ただし、std::pop_heap(humble.begin(),humble.end(),g);
where g
is an instance greater1
and humble
is a heap who make [9,15,15,25]
whensort_heap
が呼び出されると、15
ポップが発生します。
私のコンパレータは正しいですか?何がうまくいかないのですか?
編集:
コンパレータなしで sort_heap を実行していることに気付きましたが、このコンパレータを実行すると[15,15,9,25]
、sort_heap
. 今、私はコンパレーターが確実に機能していないと考えていますが、その理由は不明です。
1 STL はデフォルトで max-heap を作成するため、コンパレータが必要です。