我想使用lambda排序數組以在比較函數中使用另一個數組。裏面一個大的功能,我有這樣的代碼:使用lambda錯誤的C++排序
std::sort(arr.begin(), arr.end(),[] (int& a, int& b)
{
return (*i)[a] < (*i)[b];
});
我得到在包含函數以下錯誤:
mcmc.cpp:139: error: expected primary-expression before ‘[’ token
mcmc.cpp:139: error: expected primary-expression before ‘]’ token
mcmc.cpp:139: error: expected primary-expression before ‘int’
mcmc.cpp:139: error: expected primary-expression before ‘int’
編譯時,我包括-std =的C++ 0x選項以及。
我對發生了什麼感到困惑。出於某種原因,它似乎不認爲我的語法是有效的。爲了防萬一,我做了一個百勝的更新,但它似乎仍然不能識別使用lambda表達式。
從你*我包括-std = C++ 0x選項*評論,我收集你使用的是G ++,所以問題是G ++究竟是哪個版本?並不是每個人都支持lambdas。請參閱http://gcc.gnu.org/projects/cxx0x.html(此頁面包含有關每個G ++版本的C++ 11兼容性的信息,我會定期查閱,但不知何故,該網站似乎現在已停用 - 請重試後來) – syam 2013-03-19 01:06:40
看起來你在關閉參數後缺少一個paren。 – bchurchill 2013-03-19 01:08:22
@syam我已經安裝了v 4.4.7 gcc。我認爲g ++只是運行gcc的cpp命令。我只是做了一個yum更新,所以我應該有最新的gcc。 – saccharine 2013-03-19 01:10:17