我知道hashmap在Java中是如何工作的.但我无法完全理解C++.
我找到了一些简单的教程,但没有哈希函数等.
字符串是否需要哈希函数?
hash_map<string, string> hm;
hm.insert(make_pair("one", "two"));
hm.insert(make_pair("three", "four"));
Run Code Online (Sandbox Code Playgroud)
如果没有字符串的哈希函数,它将如何工作?如何添加哈希函数?
hash_map有什么好的教程吗?
谢谢!
tem*_*def 10
对于初学者来说,hash_map它不是标准的C++库; 它是Visual Studio和g ++附带的编译器扩展.如果要在C++中使用更标准化的哈希表,请查看Boost.Unordered库,TR1哈希容器,或者,如果您有更现代的编译器,请查看新的C++ 0x标准哈希容器类型.这些容器被命名unordered_map,unordered_set而不是更具暗示性,hash_map或者hash_set具有更标准化的支持并且更便于携带.
至于关于如何指定哈希函数的问题,hash_map对于大多数标准类型都有内置哈希函数,包括std::string,因此您不需要指定一个.如果您确实想要定义自己的哈希函数,则应创建一个重载的函数对象operator()以提供哈希代码,然后hash_map除了其他类型之外,还要对该类型进行参数化.例如:
struct MyCustomHash {
size_t operator() (const string& str) const {
/* Terrible hash function... for instructional purposes only! */
return str.empty()? 0 : str[0];
}
};
hash_map<string, int, MyCustomHash> myHashMap;
Run Code Online (Sandbox Code Playgroud)
现在myHashMap将使用MyCustomHash而不是默认的哈希函数.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
5207 次 |
| 最近记录: |