std::map でキーとしてポインターを使用する
std::map でキーとしてポインターを使用する場合、ポインタではなく指定された値に基づいて比較を可能にする比較ファンクター
問題:
提供されたコード スニペットでは、std::map
解決策:
これを解決するには、char* キーが指す null で終わる文字列を比較する比較関数を使用します。以下に例を示します。
struct cmp_str { bool operator()(char const *a, char const *b) const { return std::strcmp(a, b) < 0; } }; std::map<char *, int, cmp_str> g_PlayerNames;
この例では、cmp_str 構造体は、std::strcmp を使用してポイントされた文字列を比較する Operator() 関数を定義します。これにより、マップ キーがポインタ値ではなく文字列値に基づいて比較されるようになります。この比較ファンクターを使用すると、基になる null で終了する文字列に基づいてマップを正しく操作できます。
以上がstd::map でポインタをキーとして正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。