Size: a a a

2020 July 18

VS

Void Space01 in supapro.cxx
Побитый Кирпич
MyClass у тебя ключ, он сравнивается
А можешь подробнее объяснить почему? У нас же в max_element передаются итераторы. Т.е. по идее должны сравниваться элементы контейнера, которые по логике являются парами?
источник

ПК

Побитый Кирпич... in supapro.cxx
Void Space01
А можешь подробнее объяснить почему? У нас же в max_element передаются итераторы. Т.е. по идее должны сравниваться элементы контейнера, которые по логике являются парами?
Да, ты прав, я ошибся, щас посмотрю
источник

ПК

Побитый Кирпич... in supapro.cxx
Ну вообще, у пары уже есть оператор <
источник

ПК

Побитый Кирпич... in supapro.cxx
Так что ты не должен ничего перегружать
источник

ПК

Побитый Кирпич... in supapro.cxx
Думаю лучший вариант это передавать свою  функцию сравнения
источник

VS

Void Space01 in supapro.cxx
Ну да, у пары есть. Но у пары содержащей мой класс - нет. И его точно можно перегрузить. Тут суть в том, что эта перегрузка не используется или не так как мной задумано используется в max_element. Вот я и предположил что перегружаю не для того типа операцию.
источник

VS

Void Space01 in supapro.cxx
Через функцию-то все работает без проблем.
источник

VS

Void Space01 in supapro.cxx
Хочется разобраться просто.
источник

E

Evgeny in supapro.cxx
Тебе надо оператор< для своего класса определить
источник

VS

Void Space01 in supapro.cxx
он определен
источник

ПК

Побитый Кирпич... in supapro.cxx
Void Space01
Ну да, у пары есть. Но у пары содержащей мой класс - нет. И его точно можно перегрузить. Тут суть в том, что эта перегрузка не используется или не так как мной задумано используется в max_element. Вот я и предположил что перегружаю не для того типа операцию.
Она есть у всех пар
источник

E

Evgeny in supapro.cxx
Void Space01
он определен
Ну тогда max_element должен нормально работать
источник

ПК

Побитый Кирпич... in supapro.cxx
Я вообще не уверен, что перегрузка оператора < для пары это не UB
источник

ПК

Побитый Кирпич... in supapro.cxx
какой нибудь ODR violation там полюбому есть
источник

VS

Void Space01 in supapro.cxx
Evgeny
Ну тогда max_element должен нормально работать
Нет, мне же надо максимальное значение в second, а мой класс в first. Я же писал что это для map<MyClass, int>
источник

VS

Void Space01 in supapro.cxx
Побитый Кирпич
Я вообще не уверен, что перегрузка оператора < для пары это не UB
Не согласен, разве пары нельзя сравнивать?
источник

ПК

Побитый Кирпич... in supapro.cxx
Void Space01
Не согласен, разве пары нельзя сравнивать?
Можно, но нельзя перегружать уже имеющийся оператор <. Опять же это мои подозрения
источник

ПК

Побитый Кирпич... in supapro.cxx
Void Space01
Нет, мне же надо максимальное значение в second, а мой класс в first. Я же писал что это для map<MyClass, int>
Ты меняешь семантику сравнения пары, это кейс не перегрузки оператора, а кастомной стратегии-функции в алгоритме
источник

ПК

Побитый Кирпич... in supapro.cxx
То что ты хочешь меньше букв решается  не перегрузкой оператора, а обёрткой над max_element, которая зафиксирует код функции сравнения
источник

VS

Void Space01 in supapro.cxx
Побитый Кирпич
Ты меняешь семантику сравнения пары, это кейс не перегрузки оператора, а кастомной стратегии-функции в алгоритме
Ну вот на стековерфлоу пишут что все ок https://stackoverflow.com/questions/23720794/overload-operator-for-stdpair
источник