0
我正在尝试创建string
的list
的unordered_set
。对于std :: list,在C++ STL(std :: unordered_set)中没有散列函数?
但我坚持了这个错误:
/usr/include/c++/4.8/bits/hashtable_policy.h:1103:22: error: no match for call to ‘(const std::hash<std::list<std::basic_string<char> > >) (const std::list<std::basic_string<char> >&)’
我怀疑,这是因为STL不具备的string
list
的哈希函数。
创建相同类型的set
工作,但我担心效率问题(插入和查找时间)。
对此有什么解决办法?我不想为列表实现哈希函数!但可能有人会建议我一些替代想法。
正如你所说,没有定义散列函数。所以你不想通过定义一个散列函数来解决问题,并且你不想使用一个不需要的容器。那么,恩,你只是没有理由排除你的选择:) –
[Boost](http://www.boost.org/doc/libs/1_55_0/doc/html/hash.html)支持标准容器。 – chris
“我不想为列表实现散列函数!”为什么不?它不一定非常复杂。见http://www.boost.org/doc/libs/1_35_0/doc/html/hash/combine.html。如果你不想提升依赖,'hash_combine'的实现不会很长。 –