ホームページ > バックエンド開発 > C++ > C の `std::map` で `char*` キーを正しく使用するにはどうすればよいですか?

C の `std::map` で `char*` キーを正しく使用するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-06 20:36:12
オリジナル
759 人が閲覧しました

How Can I Correctly Use `char*` Keys in a C   `std::map`?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート