gpt4 book ai didi

c++ - C++中的简单 HashMap 实现

转载 作者:IT老高 更新时间:2023-10-28 12:42:56 25 4
gpt4 key购买 nike

我对 C++ 比较陌生。在 Java 中,我很容易实例化和使用 hashmap。我想知道如何在 C++ 中以简单的方式实现它,因为我看到了许多不同的实现,但对我来说它们都不简单。

最佳答案

大多数编译器应该为你定义std::hash_map;在即将到来的 C++0x 标准中,它将成为标准库的一部分,为 std::unordered_map . STL Page关于它是相当标准的。如果您使用 Visual Studio,Microsoft上面有一个页面。

如果你想使用你的类作为值,而不是作为键,那么你不需要做任何特别的事情。所有原始类型(像 intcharbool 甚至 char * 之类的东西)都应该“正常工作” hash_map 中的键。但是,对于其他任何事情,您都必须定义自己的散列和相等函数,然后编写将它们包装在一个类中的“仿函数”。

假设你的类被称为 MyClass 并且你已经定义了:

size_t MyClass::HashValue() const { /* something */ }
bool MyClass::Equals(const MyClass& other) const { /* something */ }

您需要定义两个仿函数来将这些方法包装在对象中。

struct MyClassHash {
size_t operator()(const MyClass& p) const {
return p.HashValue();
}
};

struct MyClassEqual {
bool operator()(const MyClass& c1, const MyClass& c2) const {
return c1.Equals(c2);
}
};

并将您的 hash_map/hash_set 实例化为:

hash_map<MyClass, DataType, MyClassHash, MyClassEqual> my_hash_map;
hash_set<MyClass, MyClassHash, MyClassEqual> my_hash_set;

之后一切都应该按预期工作。

关于c++ - C++中的简单 HashMap 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/266206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com