我想使用Boost.Phoenix创建一个由几行代码组成的lambda函数,然后“返回”一个值,以便我可以将它与std::transform
一起使用。如何在Boost.Phoenix中使用一系列语句以及std :: transform?
像这样:
std::transform(a.begin(), a.end(), b.begin(),
(
//Do something complicated here with the elements of a:
statement1,
statement2,
statement3
//Is there a way to return a value here?
)
);
随着std::for_each
这将很好地工作,但std::transform
不编译,因为逗号运算符返回void
。我怎样才能从这样的lambda函数返回一个值?
编辑:我改变了代码片段,因为我写的第一个地方导致了我想要做的事情的误解。
也许我应该更清楚地表明,我在第一位发布的代码片段只是一个示例,与我的实际问题没有多大关系。我的问题涉及复杂的数据结构,'std :: transform'确实是我可以使用的唯一标准算法。我更新了这个问题来澄清这一点。 – AbuBakr 2011-05-25 08:32:29