gpt4 book ai didi

c++ - 在标准算法中,通过引用捕获哪里更正确?

转载 作者:搜寻专家 更新时间:2023-10-30 23:52:52 24 4
gpt4 key购买 nike

CppCoreGuideline F.52声明对于算法中使用的 lambda,通过引用捕获更为正确。

我不明白为什么 - 算法大多是用值语义定义的。

在什么情况下通过引用捕获更正确?

最佳答案

请注意,准则并没有说“为了正确性”,而是说“为了效率和正确性”。通过引用捕获肯定更有效,因为标准算法中使用的仿函数和谓词是按值传递的。如果您需要访问其中的大(gish)本地对象,按值捕获将意味着将它们与仿函数的每个拷贝一起复制。通过引用捕获让您可以直接处理局部变量。

我承认,我实际上想不出使用引用有助于正确性的场景。原因很简单:默认情况下,值捕获的实体是 const 限定的,所以如果你打算修改 lambda 中的一个局部变量并且不小心通过复制而不是引用捕获它,你会得到一个编译错误(除非你标记 lambda 的调用运算符 mutable,此时你显然已经给予了足够的关注,不需要经验法则)。

关于c++ - 在标准算法中,通过引用捕获哪里更正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43361845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com