[英]Compare argument in priority_queue
我想將自定義的priority_queue
定義為priority_queue<int, vector<int>, TCOMP>
,其中int
在此處存儲在priority_queue
之外定義的矢量arr
的索引。 就像是:
vector<int> arr = {2, 5, 1, 6, 10, 3};
struct TCOMP
{
bool operator()(int index1, int index2) const
{ return arr[index1] < arr[index2]; }
}
priority_queue<int, vector<int>, TCOMP> pq;
有沒有辦法做到這一點? 請注意,我不喜歡將int*
包含在此問題中。
將比較謂詞明確綁定到數組。 這將為您提供更大的靈活性,因為您將可以在不同的數組中使用它。
#include <vector>
#include <queue>
using namespace std;
struct TCOMP
{
const vector<int>& arr;
TCOMP(const vector<int>* a) : arr(*a) {}
bool operator()(int index1, int index2) const
{ return arr[index1] < arr[index2]; }
};
int main()
{
vector<int> arr = {2, 5, 1, 6, 10, 3};
priority_queue<int, vector<int>, TCOMP> pq((TCOMP(&arr)));
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.