Sobes.tech
Junior — Middle
98

Бағдарламалауда лямбда өрнектерімен жұмыс жасағанда өзгермелілік (mutability) қалай пайдаланылады?

Сұралған компаниялар
Открытые РешенияОткрытые Решения

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