如果 sort(A.begin(), A.end(), greater()) 其中 A 是向量,则得到 A 的降序;如果priority_queue,大于> Q;你得到Q的升序;我不知道为什么,在编写我的自定义运算符()时很难记住何时使用 > 何时使用 <。这是我的测试代码:有人能说出它们是如何排序的吗?
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;
}