gpt4 book ai didi

c++ - 这是在调用函数中重用 C++11 lambda 的合理模式吗?

转载 作者:行者123 更新时间:2023-11-30 01:04:18 25 4
gpt4 key购买 nike

我有一个我希望多次使用的 lambda,但我希望它在第二次运行时至少对一个不同的(捕获)变量进行操作。这种方法 - 在 lambda 内部使用捕获的指针引用,在调用代码中将其重定向到不同的变量 - 是一种正常/明智的方法吗?或者我应该使用单独的机制,还是完全不同的方法?

MyStruct ms1;
MyStruct* pActiveMyStruct = &ms1;
auto lambda = [&]( const Foo& foo, u32 index )
{
pActiveMyStruct->sScore = foo.m_Score;
pActiveMyStruct->DoSomethingWith( index );
};
pProcessor->ApplyLambdaOn( lambda );

MyStruct ms2;
pActiveMyStruct = &ms2;
pProcessor->ApplyLambdaOn( lambda );

最佳答案

函数式方法是使用闭包:

MyStruct ms1, ms2;
auto makeLambda = [](MyStruct& ms) {
return [&ms](const Foo& foo, u32 index) {
ms.sScore = foo.m_Score;
ms.DoSomethingWith(index);
};
};

pProcessor->ApplyLambdaOn(makeLambda(ms1));
pProcessor->ApplyLambdaOn(makeLambda(ms2));

关于c++ - 这是在调用函数中重用 C++11 lambda 的合理模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50356217/

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