簡體   English   中英

比較priority_queue中的參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM