我想使用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