我遇到了在Boost上使用lambda的问题。
代码应该将函数(字符串)的结果放在向量的指定索引中。
std::vector< string > results(size);
std::vector< boost::thread > threads;
for( int i = 0; i < size; i++ ) {
threads.push_back( boost::thread( results.at( i ) = getAString( x,y,zed ) ) );
}
我如何在这里使用Boost :: lambda?
请不要提及使用c ++ 11语法。我被迫处理的系统不支持支持c ++ 11的编译器。谢谢!
答案 0 :(得分:0)
在你的情况下,我想知道lambda函数的好处是什么。 C ++中的Lambdas最适用于已填充的容器上的STL算法。在您的情况下,您希望使用lambda填充向量results
,这不是库所预期的那种。你可能会有一场艰苦的战斗。
http://www.boost.org/doc/libs/1_49_0/doc/html/lambda.html#introduction
话虽这么说,有可能创建直接喂rvalues的lambdas: http://www.boost.org/doc/libs/1_49_0/doc/html/lambda/le_in_details.html#lambda.rvalues_as_actual_arguments 虽然在你的情况下,我不确定固定函数的好处是什么,它可以使用组成字符串时使用的参数。
此外,我认为线程函数不能返回值,因此您的线程函数必须将results.at(i)
的位置作为参数。