首页 >后端开发 >C++ >如何正确使用 char* 作为 C std::map 中的键?

如何正确使用 char* 作为 C std::map 中的键?

Linda Hamilton
Linda Hamilton原创
2024-12-11 11:37:10551浏览

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

在 std::map 中使用 char* 作为 Key

在 C 中,使用 char 指针时可能会遇到问题(char) 作为 std::map 中的键。当尝试使用 char 键创建映射并遇到意外行为时,可能会发生这种情况。

要解决此问题,重要的是要了解默认情况下,std::map 使用指针地址比较键,不是他们所代表的实际角色。这可能会导致不正确的比较和不可靠的行为。

要解决此问题,您必须向映射提供比较函子。比较函子是定义如何比较键的函数。通过使用比较 char* 指针指向的以 null 结尾的字符串的函子,您可以确保映射根据字符串值正确排序和检索元素。

以下是如何定义char* 键的比较函子:

struct cmp_str
{
   bool operator()(char const *a, char const *b) const
   {
      return std::strcmp(a, b) < 0;
   }
};

定义比较函子后,您可以将其作为第三个模板参数传递给标准::地图。这将强制映射使用函子来比较键:

map<char *, int, cmp_str> BlahBlah;

通过提供比较函子,您可以指示映射比较 char* 键指向的实际字符串,确保正确的排序和检索基于字符串值的元素。

以上是如何正确使用 char* 作为 C std::map 中的键?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn