if sort(A.begin(), A.end(), greater()) A がベクトルの場合、A の降順を取得します。priority_queue の場合、より大きい > Q。Q の昇順を取得します。理由がわかりません。また、カスタマイズした operator() を記述するときに、いつ > を使用するか、いつ < を使用するかを思い出すのが困難です。ここに私のテストコードがあります: 誰がどのようにソートされているか分かりますか?
struct compare_test{ //similar to greater() in STL
bool operator()(const int a, const int b){
return a>b;
}
};
void my_compare_test(){
vector<int> A;
// priority_queue<int,vector<int>, greater<int> > Q;
priority_queue<int,vector<int>, compare_test > Q;
for (int i = 0; i < 5; i++){
A.push_back(i);
Q.push(i);
}
// sort(A.begin(), A.end(), greater<int>());
sort(A.begin(), A.end(), compare_test()); //get descending order
for (int i = 0; i < 5; i++){
cout << "A = " << A[i] << "; ";
}
cout << endl;
while(!Q.empty()){
cout << "Q = " << Q.top() << "; "; ////get ascending order
Q.pop();
}
cout << endl;
}