Если вы хотите, чтобы записи карты были отсортированы в определенном порядке (а по умолчанию используется operator <
, что не соответствует тому, что вы просите), то вам нужно создать свою карту с помощью специального компаратора.
struct myComp {
bool operator()(const std::pair<std::string, int>& lhs,
const std::pair<std::string, int>& rhs) const
{ /* your code here */ }
};
std::map<std::pair<std::string, int>, int, myComp> m;
Ваш объект сравнения должен устанавливать строгий слабый порядок значений.
Это означает, что для любых std::pair<std::string, int> a,b,c
и myComp cmp
:
cmp(a, a)
неверно.
- если
cmp(a, b)
верно, то cmp(b, a)
неверно.
- , если
cmp(a, b)
истинно и cmp(b, c)
верно, тогда cmp(a, c)
верно.