首頁 >後端開發 >C++ >為什麼 `std::sort` 無法對結構體的 `std::list` 進行排序?

為什麼 `std::sort` 無法對結構體的 `std::list` 進行排序?

Linda Hamilton
Linda Hamilton原創
2024-11-10 22:00:03573瀏覽

Why Does `std::sort` Fail to Sort a `std::list` of Structures?

使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn