首頁 >後端開發 >C++ >如何將使用者定義的鍵類型與 C STL 映射一起使用?

如何將使用者定義的鍵類型與 C STL 映射一起使用?

Susan Sarandon
Susan Sarandon原創
2024-12-24 01:54:10484瀏覽

How to Use User-Defined Key Types with C   STL Maps?

使用使用者定義的鍵類型了解STL 映射

在C 語言中,STL 映射提供了強大的資料結構,用於根據唯一鍵組織資料。但是,使用具有使用者定義類型的映射可能會導致編譯錯誤。

根本原因:缺少比較運算子

錯誤訊息突顯缺少重載的 less-使用者定義類別 Class1 的比運算子 (

使用自訂比較器進行解析

要解決此問題,您可以建立自訂比較器類別來定義 Class1 物件的比較邏輯。例如:

struct Class1Compare {
  bool operator() (const Class1& lhs, const Class1& rhs) const {
    return lhs.id < rhs.id;
  }
};

std::map<Class1, int, Class1Compare> c2int;

這裡,Class1Compare 類別提供了根據 id 值比較 Class1 物件的實作。

替代方案:專門化std::less

或者,您可以將std::less 模板專門用於Class1物件:

namespace std {
  template<> struct less<Class1> {
    bool operator() (const Class1& lhs, const Class1& rhs) const {
      return lhs.id < rhs.id;
    }
  };
}

透過專門化std::less,您可以為Class1 物件提供特定的比較邏輯,同時最大限度地降低程式碼複雜度。

以上是如何將使用者定義的鍵類型與 C STL 映射一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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