我想要自定義排序的優先級隊列,但因爲我很懶,所以我不想定義一個實現operator()的比較器類。std :: priority_queue:不定義比較器類的自定義排序
我真的想這樣的編譯:
std::priority_queue<int, std::vector<int>,
boost::bind(some_function, _1, _2, obj1, obj2)> queue;
其中some_function是一個布爾返回函數需要四個參數,隊列的第一個和第二個是整數,這兩個最後的一些物品需要用於計算排序(常量引用)。
(error: ‘boost::bind’ cannot appear in a constant-expression)
但是這不能編譯。即使更簡單
std::priority_queue<int, std::vector<int>, &compare> queue;
不會編譯,比較是一個返回布爾值的二進制函數。
(error: type/value mismatch at argument 3 in template parameter list for ‘template class std::priority_queue’; expected a type, got ‘compare’)
有什麼建議嗎?
在這裏'boost :: bind'上沒有關閉paren - 在隊列模板參數>之前。這是發佈代碼中的錯字還是您嘗試編譯的內容? – 2010-11-15 16:48:19