2013-03-22 120 views
2

確定,代碼爲:lambda表達式錯誤:表達式必須修改的左值

vector<vector<double>> imageFiltered; 

// some processing codes here 

parallel_for(blocked_range<unsigned>(0, imageFiltered.size()), 
    [=](const blocked_range<unsigned>& r) { 
     for(unsigned i = r.begin(); i != r.end(); ++i){ 
      for(unsigned j = 0; j != imageFiltered[i].size(); ++j) { 
       imageFiltered[i][j] = 0; // error here:expression must be a modifiable lvalue 
      } 
     } 
}); 

而且我已經寫另一個類似的代碼塊,工作就好了。所以,這裏有一點幫助。 PS:parallel_for來自Interl TBB。

+0

我閱讀了lambda表達式語法,並將[=]更改爲[&],現在它是完美的。 – 2013-03-22 09:13:55

回答

3

[=]導致lambda按值捕獲,這意味着它會複製imageFiltered,並將副本標記爲「const」。將[=]更改爲[&]以捕獲通過引用過濾的imageFiltered,這應能消除此問題。