首頁 >後端開發 >C++ >如何自訂 C 映射中鍵的排序?

如何自訂 C 映射中鍵的排序?

DDD
DDD原創
2024-11-03 22:14:30995瀏覽

How to Customize the Sorting of Keys in C   Maps?

地圖的自訂比較器

在 C 中,地圖使用比較函數來組織其鍵值對。預設情況下,映射的內建字串比較器會按字母順序比較字串。但是,您可以重寫此比較器來定義您自己的比較條件。

使用自訂比較器

要定義您自己的字串比較器,請建立一個實作該運算子的結構體() 方法。此方法應採用兩個字串作為參數並傳回一個布林值,指示它們的順序:

<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(cmpByStringLength());</code>

其他排序選項

覆蓋比較器可讓您根據任何自訂條件對地圖進行排序。請注意,按長度比較時,每個長度只能有一個字串作為映射中的唯一鍵。

對於更複雜的排序需求,您也可以探索使用第三方函式庫,例如 Boost 的 multi_index 容器。

以上是如何自訂 C 映射中鍵的排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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