перегрузка std :: find для пользовательских классов

Ну можно / «хорошо» перегрузить std::find для пользовательских классов в объектах? И тогда без перегрузки операторы равенства. Скажем, контейнер хранит (умные) указатели на его фактические данные, я действительно не заинтересован в расположении данных или режиме хранения, я просто хочу найти определенный элемент данных ….

Законно ли это, «морально»? Если сказать, что у меня есть std::vector<std::shared_ptr<myClass> > — или «даже» пользовательский контейнер? Или я должен всегда полагаться на std::find_if для подобных случаев?

0

Решение

Идиоматическим решением было бы использовать станд :: find_if и дать ему подходящий предикат.

Это сводит к минимуму код, который вы должны написать и поддерживать, и отделяет вас от конкретного типа контейнера.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]