簡體   English   中英

std :: priority_queue:自定義排序,不定義比較器類

[英]std::priority_queue: Custom ordering without defining comparator class

我希望有一個具有自定義排序的優先級隊列,但是像我一樣懶,我不想定義一個實現operator()的比較器類。

我真的希望編譯這樣的東西:

std::priority_queue<int, std::vector<int>, 
    boost::bind(some_function, _1, _2, obj1, obj2)> queue;

其中some_function是一個bool返回函數,它接受四個參數,第一個和第二個是隊列的int,最后兩個是計算排序所需的一些對象(const引用)。

(錯誤:'boost :: bind'不能出現在常量表達式中)

但這不編譯。 甚至更簡單

std::priority_queue<int, std::vector<int>, &compare> queue;

不會編譯,比較是返回bool的二進制函數。

(錯誤:模板參數列表中參數3的類型/值不匹配'模板類std :: priority_queue';預期類型,得到'比較')

有什么建議么?

這可能有效:

std::priority_queue<int, std::vector<int>, 
    boost::function<bool(int,int)> >

然后將綁定表達式傳遞給隊列的構造函數。

PS你得到那些編譯錯誤,因為你把運行時評估的表達式放在需要typename或constant表達式的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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