【发布时间】:2010-01-20 06:56:39
【问题描述】:
我正在尝试定义一种具有自定义哈希函数和相等比较函数的 unordered_map。这些函数的函数原型如下:
//set<Vertex3DXT*> is the type of the key; Cell3DXT* is the type of the value
size_t VertexSetHashFunction(set<Vertex3DXT*> vertexSet); //hash function
bool SetEqual(set<Vertex3DXT*> a, set<Vertex3DXT*> b); //equality
我声明了这些函数原型,然后我尝试如下声明类型:
typedef std::tr1::unordered_map<set<Vertex3DXT*>, Cell3DXT*, VertexSetHashFunction, SetEqual> CellDatabaseMapType;
但它说 VertexSetHashFunction 和 SetEqual 不是有效的模板类型参数。该文档令人困惑,因为它没有准确说明模板参数应该是什么类型 - 我只是应该像我在这里所做的那样给它函数,还是有一些其他类型的对象封装了函数(因为文档确实谈到了“哈希函数对象类型”)?
【问题讨论】:
-
你还关心这个问题吗?
-
感谢您的提醒 - 其中一个答案是我想要的答案,但我只是忘记接受了。我现在才接受。
标签: c++ templates unordered-map