使用STL 排序函數對列表進行排序:實現問題
嘗試使用std::sort 函數對結構列表進行排序時,您可能會遇到編譯錯誤,指示缺少運算子-。當提供的比較器 SortDescending 對 std::list 的元素進行操作時,會出現此錯誤,該列表支援雙向迭代器,而不是 std::sort 所需的隨機存取迭代器。
要解決此問題,請不要使用std::sort,使用 std::list::sort 成員函數,該函數專門用於處理清單。這是使用 std::list::sort:
Result.poly.sort(SortDescending());
修改後的程式碼,請注意,std::list::sort 成員函式也需要一個比較函數。 SortDescending 比較器保持不變:
struct SortDescending { bool operator()(const term& t1, const term& t2) { return t2.pow < t1.pow; } };
透過將 std::list::sort 與 SortDescending 比較器結合使用,您可以根據 'pow' 成員成功對清單進行降序排序。 “術語”結構。
以上是為什麼 `std::sort` 無法對結構體的 `std::list` 進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!