首頁 >後端開發 >C++ >如何自訂 STL 圖中的關鍵比較?

如何自訂 STL 圖中的關鍵比較?

DDD
DDD原創
2024-11-03 13:37:02965瀏覽

How Can You Customize Key Comparisons in STL Maps?

自訂映射鍵比較的比較器

使用映射時,鍵比較器的選擇可能會顯著影響集合的行為。在 STL 映射中,預設比較器會根據鍵的自然順序來比較鍵。但是,可以覆寫此預設值並為關鍵比較指定自訂比較器。

建立自訂比較器

要定義自訂比較器,請建立一個類別或結構實作了operator()函數。此函數採用兩個代表要比較的鍵的參數,並傳回一個指示比較結果的布林值。例如,要按字串長度比較鍵,您可以建立以下比較器:

<code class="cpp">struct cmpByStringLength {
    bool operator()(const std::string& a, const std::string& b) const {
        return a.length() < b.length();
    }
};

在地圖中使用自訂比較器

一旦您有了自訂比較器,您可以使用它作為第三個模板參數傳遞來初始化地圖:

<code class="cpp">std::map<std::string, std::string, cmpByStringLength> myMap;</code>

或者,您也可以將比較器傳遞給地圖的構造函數:

<code class="cpp">std::map<std::string, std::string> myMap(std::less<std::string>(), cmpByStringLength());</code>

其他排序選項

雖然使用自訂比較器提供了靈活性,但值得注意的是,使用基於長度的自訂比較器可能會限制您擁有多個具有相同長度的鍵的能力。如果您需要更複雜的排序機制,請考慮使用替代資料結構,例如 Boost.MultiIndex 或外部排序庫。

以上是如何自訂 STL 圖中的關鍵比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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