gpt4 book ai didi

c++ - 具有自定义比较函数对象的 STL 映射

转载 作者:可可西里 更新时间:2023-11-01 15:20:48 26 4
gpt4 key购买 nike

我想使用 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 &”类型是什么以及为什么它不能仅与“unsigned char *”一起工作?

最佳答案

您需要提供一个比较器来保证不修改传递的值,因此是 const(注意它适用于 pointer 而不是 char)。至于引用运算符 (&),您不需要它——它是可选的。这也将编译:

struct my_cmp
{
bool operator() (unsigned char * const a, unsigned char * const b)
{
return memcmp(a,b,4) < 0;
}
};

关于c++ - 具有自定义比较函数对象的 STL 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2057610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com