我正在编写使用状态空间的类。我的问题是,我不知道将多个值用作unordered_map
.
它应该以这种方式工作:
我创建具有值 <1;0;8> 的状态对象,因此它将作为<1;0;8>:pointer_to_object
. 我想要哈希图,因为我需要尽快找到对象。
unordered_map
是否可以在不提前指定大小的情况下将其中一个用作键?
编辑:
我尝试使用@the_mandrill 推荐的代码,如下所示:
template <class T>
typedef std::unordered_map<std::vector<T>, State<T>*, boost::hash<std::vector<T>> Map;
template <class T>
size_t hash_value(const std::vector<T>& vec)
{
std::size_t seed = 0;
for (const auto& val : vec) {
boost::hash_combine(seed, val);
}
return seed;
}
但我收到了这个错误:
stateSpaceLib.cpp:79:83: error: template argument 3 is invalid
typedef std::unordered_map<std::vector<T>, State<T>*, boost::hash<std::vector<T>> Map;
^
stateSpaceLib.cpp:79:1: error: template declaration of ‘typedef’
typedef std::unordered_map<std::vector<T>, State<T>*, boost::hash<std::vector<T>> Map;
^