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 позволяет изменять копии захваченных по значению переменных внутри лямбды, но не влияет на оригинальные переменные вне лямбды.