C のマップ キーとしてのカスタム ユーザー定義型
C 標準ライブラリのマップは、キーと値の効率的な検索および挿入操作を提供しますペア。ただし、ユーザー定義のクラスをマップ キーとして使用しようとすると、適切な比較関数がないため、開発者は不可解なエラー メッセージに遭遇する可能性があります。
一般的なエラー メッセージの 1 つは、「'operator
テンプレートの特殊化std::less: 別のオプションは、ユーザー定義型用に std::less テンプレートを特殊化することです。これにより、比較ロジックを std 名前空間内で直接定義できます。
namespace std { template<> struct less<Class1> { bool operator() (const Class1& lhs, const Class1& rhs) const { return lhs.id < rhs.id; } }; }
std::less を特殊化することで、明示的な演算子の公開を回避できます。コードの他の部分にオーバーロードして、比較ロジックをよりカプセル化します。
これらのアプローチのいずれかを使用することで、ユーザー定義型をマップ キーとして使用する制限を克服し、利点を得ることができます。 C 標準ライブラリの効率的なマッピング機能の利点。
以上がカスタムのユーザー定義型を C マップのキーとして使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。