Карта STL с обычаем сравнивает объект функции

Я хочу использовать контейнер Карты 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;

Это собирает и, кажется, работает, но я не уверен, что «неподписанная случайная работа * константа &» тип и почему это не работало только с «неподписанной случайной работой *»?

11
задан dvl 13 January 2010 в 15:06
поделиться

2 ответа

Вам необходимо предоставить компаратор, который гарантирует не изменение прошедших значений, поэтому Const (обратите внимание, что он применяется к указателю , а не CHAR). Что касается справочного оператора ( & ), вам это не нужно - это необязательно. Это также скомпилируется:

struct my_cmp
{
    bool operator() (unsigned char * const a, unsigned char * const b)
    {
        return memcmp(a,b,4) < 0;  
    }
};
8
ответ дан 3 December 2019 в 10:26
поделиться

Для меня это работает только с неподписанным символом *.

1
ответ дан 3 December 2019 в 10:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: