Я пытаюсь понять, как работает пользовательская функция сравнения в STL.Я написал программу ниже и передал пользовательскую функцию в функцию сортировки STL и очередь приоритетов.Я ожидал, что оба вывода обоих будут отсортированы в порядке возрастания, но это не так.
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
struct compareStruct {
bool operator() (int i,int j)
{
return (i<j);
}
} compare;
int main() {
int numbers[] = {32,71,12,45,26,80,53,33};
vector<int> myvector (numbers, numbers+8);
sort (myvector.begin(), myvector.end(), compare);
priority_queue<int, vector<int>, compareStruct> mypq;
for(int i=0;i<8;i++)
{
mypq.push(numbers[i]);
}
cout<<"Vector Sort Output :\n";
for (vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
cout << *it<<" ";
cout<<"\nPriority Queue Output: \n";
while(!mypq.empty())
{
cout << mypq.top()<<" ";
mypq.pop();
}
return 0;
}
Вывод вышеуказанной программы:
Вывод векторных сортировок: 12 26 32 33 4553 71 80 Выход из приоритетной очереди: 80 71 53 45 33 32 26 12