char* キーを使用した std::map について
C プログラミングでは、std:: のキーとして char を使用します。マップは予期しない問題を引き起こす可能性があります。この記事では、char キーの使用に関連する課題を詳しく掘り下げ、これらの困難を克服するための解決策を検討します。
質問で提供されているコード サンプルは、std::map が生のポインタを比較するのではなく生のポインタを比較するため、問題に直面しています。参照するヌル終了文字列。この問題を解決するには、比較ファンクターをマップに組み込む必要があります。
解決策として次のコード スニペットを検討してください。
struct cmp_str { bool operator()(char const *a, char const *b) const { return std::strcmp(a, b) < 0; } }; map<char *, int, cmp_str> g_PlayerNames;
この比較ファンクターを定義して利用することで、 std::map には、char* キーが指す null で終了する文字列を比較する機能が備わっており、適切に機能することを保証し、提供されたキーで発生した問題を解決します。コード。
以上がC の `std::map` で `char*` キーを正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。