我想使用STL的Map容器通过使用二进制数据作为键来查找指针,所以我编写了这个自定义函数对象:
struct my_cmp
{
bool operator() (unsigned char * const &a, unsigned char * const &b)
{
return (memcmp(a,b,4)<0) ? true : false;
}
};
并像这样使用它:
map<unsigned char *, void *, my_cmp> mymap;
这编译并且似乎有效,但我不确定什么是“unsigned char * const&amp;”类型是为什么它不能只使用“unsigned char *”?
答案 0 :(得分:8)
你需要提供一个比较器,保证不修改传递的值,因此const(注意它适用于指针而不是char)。对于引用运算符(&
),您不需要它 - 它是可选的。这也将编译:
struct my_cmp
{
bool operator() (unsigned char * const a, unsigned char * const b)
{
return memcmp(a,b,4) < 0;
}
};
答案 1 :(得分:1)
仅适用于我unsigned char *
。