使用指针作为 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() 函数。这确保了映射键是根据其字符串值而不是指针值进行比较的。通过使用此比较函子,您可以根据底层空终止字符串正确操作映射。
以上是如何正确使用指针作为 std::map 中的键?的详细内容。更多信息请关注PHP中文网其他相关文章!