首頁 > 後端開發 > C++ > 主體

為什麼我無法使用'std::sort”和自訂比較器對清單進行降序排序?

Patricia Arquette
發布: 2024-11-20 16:53:28
原創
408 人瀏覽過

Why Can't I Sort a List in Descending Order Using `std::sort` and a Custom Comparator?

使用STL 排序函數對列表進行排序

當列表包含自訂結構體的物件時,按順序實現列表排序可能會降序實現列表排序很困難。但是,您遇到的問題“'__last - __first' 中的 'operator-' 不匹配”揭示了所選排序方法的更深層問題。

提供的 SortDescending 結構正確定義了一個運算符來比較兩個術語,但它是根據它們的功率來實現的,t2.pow

問題源自 std::sort 需要隨機存取迭代器,而清單迭代器不提供。雙向迭代器,如 std::list 中的迭代器,可讓您在清單中移動,但它們缺乏執行直接存取或指標算術的必要功能。

要使用 STL 排序函數對清單進行隨機排序存取迭代器必須可用。另一種方法是使用成員函數 std::list::sort。此函數接受比較器函數作為參數,使您能夠定義自訂排序標準。

在您的情況下,以下程式碼將根據列表項目的冪次對列表進行降序排序:

Result.poly.sort([](const term& t1, const term& t2) { return t1.pow > t2.pow; });
登入後複製

透過使用正確的迭代器和適當的排序函數,您可以按所需的順序有效地對清單進行排序。

以上是為什麼我無法使用'std::sort”和自訂比較器對清單進行降序排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板