地圖的自訂比較器
在 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中文網其他相關文章!