使用使用者定義的鍵類型了解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中文網其他相關文章!