🍿 Лямбды в STL: где они сияют

🍿 Лямбды в STL: где они сияют

STL-алгоритмы — основное применение лямбд в C++. Они превратили императивные циклы в декларативные выражения, делающие код выразительнее и безопаснее.

🔸 Классика — std::transform:
std::transform(vec.begin(), vec.end(), vec.begin(), [](int x) { return x * 2; });
умножает все элементы на два.

🔸 Или std::sort с кастомным компаратором:
std::sort(vec.begin(), vec.end(), [](const auto& a, const auto& b) { return a.priority > b.priority; });

🔸 Предикатные алгоритмы особенно элегантны:
std::count_if, std::find_if, std::remove_if

🔸 Вместо циклов с условиями — одна строка:
auto count = std::count_if(vec.begin(), vec.end(), [](int x) { return x > 0; });
Логика фильтрации инкапсулирована и переиспользуема.

🔸 C++20 ranges делают это ещё лучше:
auto result = vec | std::views::filter([](int x) { return x % 2 == 0; }) | std::views::transform([](int x) { return x * x; });
— цепочка трансформаций без промежуточных контейнеров.

Лямбды с алгоритмами — это функциональное программирование в C++. Код становится декларативным, меньше ручного управления итераторами, меньше ошибок off-by-one. Оптимизатор видит больше возможностей для векторизации.

Как часто вы заменяете циклы на STL-алгоритмы с лямбдами?

#междусобойчик
Просмотры: 39
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти