實作用於排序的成員函數比較器
在 C 中,對集合進行排序需要比較器函數。嘗試使用成員函數作為比較器可能會導致編譯錯誤。
問題
考慮以下類別:
編譯此程式碼可能會產生錯誤:
ISO C 禁止取得位址不合格或帶括號的非靜態成員函數形成指向成員函數的指標。
解
要解決此問題,一種方法是使 doCompare 成為靜態成員函數。但是,如果 doCompare 需要存取 MyClass 數據,您可以將 MyClass 轉換為比較函子。
這可以透過將:
改為:
然後,呼叫排序函數,如下所示: 此外, doSort 方法應該傳回一個值,例如void。 另一個選項是將成員函數包裝在類別中,如下例所示:以上是如何在 C `std::sort` 中使用成員函數作為比較器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!