Да, у вас вполне могут быть проблемы со строго-слабым порядком. Скорее всего, он не работает, как вы ожидаете. Рассмотрим:
bool operator<( const Coord& other ) const
{
return row < other.row && col < other.col ;
}
obj1 (это)
ряд: 2
col: 3
obj2
ряд: 3
col: 2
obj1 ложь
хорошо, тогда:
obj2 false
Единственный вывод - они должны быть равны (в зависимости от вашего оператора <). Поскольку это карта, а ключи уникальны, оба ключа находятся в одном месте. Такое поведение может или не может быть то, что вы ожидаете, но похоже, что это не так. </p>
Вам нужно сделать приоритет между строкой / столбцом, чтобы <действительно работал так, как вы ожидаете: </p>
bool operator<( const Coord& other ) const
{
// look at row first, if row is equal, check column.
if (row < other.row)
{
return true;
}
else if (row == other.row)
{
return col < other.col ;
}
return false;
}