带有自定义比较功能对象的STL Map

时间:2010-01-13 15:06:24

标签: c++ stl

我想使用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 *”?

2 个答案:

答案 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 *