21xrx.com
2024-12-26 15:34:16 Thursday
登录
文章检索 我的文章 写文章
C++ Lambda中的mutable关键字
2023-07-05 02:59:32 深夜i     --     --
C++ Lambda mutable

在C++11新特性中,Lambda表达式成为了一个重要的工具。Lambda表达式可以让我们更方便地定义匿名函数,并且可以捕捉外部变量。在Lambda中,mutable关键字则提供了一个特殊的功能,允许我们在Lambda函数中修改捕捉的外部变量。

在Lambda表达式中,可以捕捉外部变量,有两种方式:值捕捉和引用捕捉。值捕捉会在Lambda函数生成时将变量值保存下来,而引用捕捉则会在Lambda函数运行时使用外部变量的值。当然,Lambda表达式也支持使用值捕捉的同时修改捕捉的变量,只需要在lambda的参数列表后加上mutable关键字即可。

例如,我们有如下代码:


int x = 10;

auto lambda = [x]() mutable { x += 1; std::cout << x << std::endl; };

lambda();

这个Lambda表达式捕捉了外部变量x,并且使用了mutable关键字。由于使用了mutable关键字,Lambda表达式可以修改外部变量的值。在这个例子中,x的初始值为10,然后Lambda表达式将x的值增加1,并将结果输出到控制台中,最后输出的值为11。

需要注意的是,在使用mutable关键字时,必须将捕获的变量值以值类型(如int、bool等)进行捕捉,不能使用引用类型进行捕捉。因为引用捕捉虽然可以在Lambda函数中修改变量值,但在使用了mutable关键字后,它也不会改变变量的值。

总结来说,mutable关键字让Lambda表达式更加灵活,可以在Lambda函数中修改捕捉的外部变量。当需要修改外部变量值的时候,只需要在Lambda的参数列表中使用mutable关键字即可。使用时需要注意捕捉的变量类型,以及在使用了mutable关键字后,不要使用引用类型进行捕捉。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复