Шрифт:
Если вы хотите сохранить указатели
После этого
Теперь приведенный выше цикл будет работать именно так, как предполагалось (при условии, что ошибка была исправлена и вместо
Если вы предпочитаете использовать алгоритм, напишите функцию, которая разыменовывает указатели
Существует более изощренное решение — обобщенный функтор разыменования, используемый с
Впрочем, замена циклов алгоритмами будет подробно рассматриваться позднее, в совете 43. А сейчас речь идет о том, что при создании стандартного ассоциативного контейнера указателей следует помнить: содержимое контейнера будет сортироваться по значениям указателей. Вряд ли такой порядок сортировки вас устроит, поэтому почти всегда определяются классы-функторы, используемые в качестве типов сравнения.
Обратите внимание на термин «тип сравнения». Возможно, вас интересует, зачем возиться с созданием функтора вместо того, чтобы просто написать функцию сравнения для контейнера
Проблема заключается в том, что каждый из трех параметров шаблона