自訂映射比較器
在 C 中, std::map 使用比較器來排序其元素。預設情況下,映射使用小於運算子 (
此問題討論如何自訂映射的比較器以按鍵的長度而不是按字母順序對鍵進行排序。這是解決方案:
使用自訂類別的解決方案
std::map 最多允許四個範本類型參數,第三個是比較器。以下是實作基於字串長度的比較器的自訂類別的範例:
<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, cmpByStringLength> myMap(cmpByStringLength());</code>
注意: 以長度比較時,每個長度只能有一個字串作為鍵出現在映射中。
以上是如何自訂 C 中映射的比較器以按鍵的長度對鍵進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!