Могу ли я определить карту, чей ключ является структурой?

и как я могу сделать это на С++?

Ответы

Ответ 1

Вы можете использовать любой тип в качестве ключа карты, если он реализует operator< (плюс обычные требования к копированию и назначению для значений, хранящихся в контейнерах).

Например:

struct example { int x; }

bool operator < (const example &l, const example &r) { return l.x < r.x; }

std::map<example, int> values;

В качестве альтернативы вы можете предоставить функцию сравнения в качестве третьего аргумента шаблона карты вместо определения operator<. Подробнее здесь (параметр Compare).