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

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

Susan Sarandon
Susan Sarandon原創
2024-12-02 01:29:09853瀏覽

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

std::map 的關鍵要求

為了使類別成為標準庫std::map 中的有效鍵,它必須遵守特定的要求。這些要求確保鍵可以在映射內可靠地排序和比較。

  • 可複製性和可分配性:鍵必須是可複製和可分配的。這允許 std::map 建立鍵的副本以進行比較和內部儲存。
  • 比較運算子: 鍵必須實作比較運算符,通常實作為
  • (小於)或> (大於)運算符。此運算子允許 std::map 確定鍵的相對順序,這對於維護映射的排序性質至關重要。
  • 嚴格排序:
  • 比較運算子必須定義嚴格排序。對於兩個鍵a和b,如果a一個。若a< b 且 b < c,則a<; c 也必須成立。

自訂金鑰實作

如果您希望用作金鑰的類別不符合這些要求,您可以建立一個包裝類別繼承自原始類並實作必要的運算子。當原始類別無法修改或未提供合適的比較運算子時,這非常有用。

以下是為簡單結構實作比較運算子的自訂鍵包裝器的範例:
struct MyType {
    // ... original class members
};

struct MyTypeWrapper {
    MyType original;

    bool operator<(const MyTypeWrapper& other) const {
        // ... custom comparison logic
    }
};

透過使用MyTypeWrapper 作為鍵,您可以對應MyType 類別的對象,同時確保正確維護映射的順序。

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

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