Я хочу использовать контейнер Карты STL для поиска указатель при помощи двоичных данных как ключ, таким образом, я написал этот таможенный объект функции:
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;
Это собирает и, кажется, работает, но я не уверен, что «неподписанная случайная работа * константа &» тип и почему это не работало только с «неподписанной случайной работой *»?
Вам необходимо предоставить компаратор, который гарантирует не изменение прошедших значений, поэтому Const (обратите внимание, что он применяется к указателю , а не CHAR). Что касается справочного оператора ( &
), вам это не нужно - это необязательно. Это также скомпилируется:
struct my_cmp
{
bool operator() (unsigned char * const a, unsigned char * const b)
{
return memcmp(a,b,4) < 0;
}
};
Для меня это работает только с неподписанным символом *
.