Итак, у меня есть простой кодМожно ли хранить QColor в QMap как ключевой
QMap<QColor, int> colors;
for(int w = 0; w < image.width(); ++w)
for (int h = 0; h < image.height(); ++h)
colors[QColor::fromRgb(image.pixel(w,h))]++;
Сообщение об ошибке
не подходит для «оператора <» (тип операнда «Const QColor 'и' const QColor ').
Так, qMapLessThanKey пытается безуспешно инстанцирует компаратор двух цветов, и это невозможно.
Вопрос: Возможно ли хранить QColor в QMap в качестве значения, а не по ссылке?
Просто интересно. Я знаю, как написать то, что я хочу по-другому. Но мне кажется странным, что в QT есть исключения из того, что я могу хранить на карте или не могу.
Это не является исключением в Qt, но вопрос о классе дизайна QColor. Карта не может работать без оператора <, как указывает Джефффри. Это просто, что std :: map является «более гибким» в строительстве. – Gombat
@ Gombat, почему вы думаете, что это вопрос дизайна QColor, но не QMap? Правильно, что мы не можем сравнивать цвета. И очевидно, что часто нам нужно, чтобы сбор значений ключей сортировался по значению, а не по ключу. Я не могу понять причину такой реализации. – cassandrad
Сбор ключевых значений должен быть отсортирован по ключу, чтобы быстро найти пару ключевых значений. Без сравнения ключей поиск двоичного дерева не будет работать. – Gombat