我想用Boost Lambda中的變換和if_then_else控制結構來更改矢量中的整型值。然而,我的編譯器不讚賞我的努力。我試圖代碼是:用if_then_else控制結構進行C++轉換
transform(theVec.begin(), theVec.end(), theVec.begin(),
if_then_else(bind(rand) % ratio == 0, _1 = bind(rand) % maxSize, _1));
我想它簡化爲以下:
transform(theVec.begin(), theVec.end(), theVec.begin(),
if_then_else(0 == 0, _1 = MaxIntSizeCFG, _1));
但是編譯器告訴我:呼叫沒有匹配功能「if_then_else(...... ....」 我讀了從控制結構的返回值是無效的,所以在這種情況下完全錯誤的我試圖使用?提前
感謝您的時間!
啊,是的,當然沒有什麼東西被傳回if_the_else結構。我嘗試過: transform(theVec.begin(),theVec.end(),theVec.begin(),if_then_else_return(bind(rand)%ratio == 0,_1 = bind(rand)%maxSize,_1)) ; 和這工作得很好。謝謝! – Demps 2010-02-12 05:00:14
沒問題,我會等待你的下一個lambda問題。 :P – GManNickG 2010-02-12 05:01:26
哈哈,它排隊!其實你能推薦一個很好的資源來表達lambada表達嗎?我只是剛剛開始使用它們(正如你所看到的那樣),我對可以做的事情印象深刻。 – Demps 2010-02-19 02:57:39