首頁 >後端開發 >C++ >類別必須滿足哪些關鍵要求才能用作 std::map 中的鍵?

類別必須滿足哪些關鍵要求才能用作 std::map 中的鍵?

Patricia Arquette
Patricia Arquette原創
2024-12-08 04:38:11694瀏覽

What Key Requirements Must a Class Satisfy to Be Used as a Key in std::map?

std::map 的關鍵要求

在使用std::map 時,會出現一個關於鍵類必須具備的特徵的常見問題充當有效的密鑰。

先決條件非常簡單:金鑰類別必須提供複製和賦值功能。映射內的實際順序由第三個模板參數或建構函數參數(如果指定)決定。此參數通常預設為 std::less,而 std::less 又預設為小於運算子 (

要自訂鍵排序,您可以建立一個比較運算符,最好是作為函數物件。以下是假設類型 MyType 的此類運算子的範例:

struct CmpMyType
{
    bool operator()(MyType const& lhs, MyType const& rhs) const
    {
        // Implementation of the comparison logic...
    }
};

請注意,此比較運算子必須定義嚴格的排序。具體來說,如果 CmpMyType()(a, b) 傳回 true,則 CmpMyType()(b, a) 必須傳回 false。如果兩個表達式的計算結果均為 false,則元素被視為相等且屬於同一等價類。透過遵守這些要求,您可以擴展密鑰類別的功能,以有效地充當 std::map 中的有效密鑰。

以上是類別必須滿足哪些關鍵要求才能用作 std::map 中的鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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