【发布时间】:2014-05-21 21:57:52
【问题描述】:
在为 std::unordered_map 的 equal_to 运算符提供专门化时,我想知道是否可以确定 lhs 或 rhs 中的哪一个是当前存储在 hashmap 中的数据?我想做这样的事情:
template<>
struct equal_to<METADATA>
{
bool operator() (METADATA const& data1, METADATA const& data2)
{
if (data1.Size == data2.Size)
{
// Need to look up the stored pointer in a global data structure
SIZE_T Pointer = g_Pointer + data1.Offset;
return memcmp(reinterpret_cast<void*>(Pointer), reinterpret_cast<void*>(data2.Pointer), data1.Size) == 0;
}
return false;
}
};
谢谢。
【问题讨论】:
-
你指的是什么hashmap?
-
更新为 std::unordered_map
-
平等应该是对称的。请不要这样做。
-
@FredOverflow:当然是对称的,但是如果两侧的一侧比另一侧更对称怎么办? :-)
-
如果
data1是const METADATA& data1,你如何分配给data1.Pointer?是mutable吗?
标签: c++ templates unordered-map