Шрифт:
Для контейнеров
Выбрать между
Совет 46. Передавайте алгоритмам объекты функций вместо функций
Часто говорят, что повышение уровня абстракции языков высокого уровня приводит к снижению эффективности сгенерированного кода. Александр Степанов, изобретатель STL, однажды разработал небольшой комплекс тестов для оценки «платы за абстракцию» при переходе с C на C++. В частности, результаты этих тестов показали, что код, сгенерированный для работы с классом, содержащим
Предположим, вы хотите отсортировать вектор чисел типа
Вспомнив о «плате за абстракцию», программист решает заменить объект функции «настоящей» функцией, которая к тому же оформлена как подставляемая (
Как ни странно, хронометраж двух вызовов sort показывает, что вызов с
Факт объясняется просто. Если функция
При вызове
алгоритму
Поскольку