Sobes.tech
Back to questions
Junior — Middle
79

Как используется изменение (mutability) при работе с лямбда-выражениями в программировании?

Companies where asked
Открытые РешенияОткрытые Решения

Answer from AI

sobes.tech AI

В C++ лямбда-выражения могут захватывать переменные из окружающего контекста. Изменяемость (mutability) здесь означает, можно ли внутри лямбды изменять захваченные переменные.

По умолчанию лямбда в C++ является константной (const), то есть внутри неё нельзя менять захваченные переменные, если они захвачены по значению. Чтобы разрешить изменение, нужно добавить спецификатор mutable:

int x = 10;
auto lambda = [x]() mutable {
    x += 5; // можно изменить локальную копию x
    std::cout << x << std::endl;
};
lambda(); // выведет 15
std::cout << x << std::endl; // x вне лямбды останется 10

Таким образом, mutable позволяет изменять копии захваченных по значению переменных внутри лямбды, но не влияет на оригинальные переменные вне лямбды.