У меня есть пара: typdef pair <unsigned char *, vector<int>> pair_t
функцию сравнения для пары
Мне нужно реализовать свою собственную функцию сравнения для этой карты, поэтому я попытался:
struct myCmp
{
int operator()(unsigned char arr_1[10], unsigned char arr_2[10])
{
return memcmp(arr_1, arr_2, 10);
}
}
typdef pair <unsigned char *, vector<int>, **myCmp**> pair_t
pair_t data(someCharArr, someIntVector);
messge ошибки я получаю wrong number of template argument (3 should be 2)
Я сделал то же самое с map
, и все было хорошо.
Как создать собственную функцию сравнения для пары?
Как я могу быть уверенным, что данные пары (someCharArr, someIntVector); найдет правильный ключ (в случае char * как ключа)?
спасибо.
Почему бы не использовать 'std :: sting' вместо' char * '. Если вы используете 'std :: string', должен работать встроенный оператор сравнения. – NathanOliver
'std :: pair' не принимает оператор сравнения. Они уже определены в терминах компонентов пары. –
Я не могу использовать строку, потому что все данные, которые я получаю, это char *, и я не могу быть уверен, что char * не будет содержать никаких «0», которые прервут сравнение строк - если я преобразую char * в string – user1673206