안녕하세요, 저는 알고리즘 문제를 정렬하는 일종의 문제를 해결하고 있습니다.C + +에서 std :: priority_queue 알파벳순 정렬 순서를 반대로하는 간단한 방법?
STL 큐 헤더와 함께 C++ STL priority_queue를 사용하여 일부 정수와 역순으로 알파벳 순서로 문자열 입력을 정렬하고 있습니다.
정수형 정렬의 증분 순서를 이와 같이 우선 순위 큐와 함께 구현하는 간단한 아이디어가 있음을 알고 있습니다.
#include <queue>
priority_queue<int> pq;
int arr[5] = {4,3,2,1,5};
for(int i = 0; i < 5; i++)
pq.push(-arr[i]);
while(!pq.empty()) {
cout << -pq.top() << endl;
pq.pop();
}
//the result may be 1, 2, 3, 4, 5
아니면 덜 연산자를 사용하여 다음과 같이 구현할 수 있습니다
priority_queue<int, vector<int>, less<int>> pq;
int arr[5] = {4,3,2,1,5};
for(int i = 0; i < 5; i++)
pq.push(arr[i]);
while(!pq.empty()) {
cout << pq.top() << endl;
pq.pop();
}
//the result may be 1, 2, 3, 4, 5
나는이 문제를 해결할 수 있습니다 알고 난이
priority_queue<pair<int, pair<int, pair<int, string>>>> pq;
같은 복잡한 자료 구조를 사용하고있는 문제 priority_queue 연산자 오버로딩.
간단하고 알맞은 방법은 이와 같은 연산자 오버로딩을 구현하지 않고 역 알파벳순을 구현합니다.
은 감사하지만, 그 대답은 내가 원하지 않았다. 사용자 지정 데이터 구조 및 비교 연산자를 만드는 방법을 묻지 않았습니다. "pq.push (-arr [i])"와 같은 우선 순위 큐를 사용하여 알파벳 순 정렬 순서를 ""단순하게 ""만드는 방법에 대해 궁금합니다. 제목에 초점을 두십시오. – JunsungChoi
@ JunsungChoi 그러면 데이터 구조가 단순하지 않기 때문에 간단한 방법으로 처리 할 수 없습니다. – Sopel
@JunsungChoi 대답 ** ** 당신이 원한다면'std :: greater'를 이미 내 대답에 언급 된대로 사용하는 것입니다. 그러나 ** 전문 개발자 **는 이해하기 어려운 코드로 3 단계의'std :: pair '를 사용하지 않을 것입니다. – Phil1970