代码之家  ›  专栏  ›  技术社区  ›  BCS

如何使用hash-map和char*并进行字符串比较?

  •  4
  • BCS  · 技术社区  · 15 年前

    我在用 std::hash_map<char*,T> 以某种方式使其工作,但现在发现了默认的比较函数, euqal_to<char*> 进行指针比较而不是字符串比较。我通过自己的比较类型(使用C)来解决这个问题 strcmp 大约5个座位),但如果没有一个已经作为STL的一部分,我会有点震惊。

    那么,是否有一个比较器来进行字符串比较?


    Related link

    2 回复  |  直到 15 年前
        1
  •  4
  •   cce    15 年前

    好, std::strcmp 当你做的时候用C++定义 #include <cstring> . 实例 SGI's hash_map doc 提供了一个 strcmp -基于为char*创建自己的等式测试函数的示例(从sgi-doc开始引用):

    struct eqstr
    {
      bool operator()(const char* s1, const char* s2) const
      {
        return strcmp(s1, s2) == 0;
      }
    };
    

    我不得不说我同意 link in your post 他说这已经是一个错误了 hash_map<char*> 默认情况下使用基于字符串的 hash<char*> . 但我通常在C++的STD::这种类型的字符串中使用HASHMAP(或者,最近,Boo::unOrdEdjPad)。

        2
  •  0
  •   Patrice Bernassola    15 年前

    STL有一个 find 字符串类型的方法。这允许您在字符串中找到一个字符串,但您可以使用它来比较两个字符串。

    否则你有一个 comparison function 对于std::string vars。

    任何变量都可以用char*构造。