使用lambda错误进行C++排序

sac*_*ine 2 c++ lambda

我正在尝试使用lambda对数组进行排序,以在比较函数中使用另一个数组.在一个更大的函数里面,我有这个代码:

std::sort(arr.begin(), arr.end(),[] (int& a, int& b)
{       
    return (*i)[a] < (*i)[b];
});   
Run Code Online (Sandbox Code Playgroud)

我在contains函数中遇到以下错误:

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’
Run Code Online (Sandbox Code Playgroud)

在编译时,我也包括-std = c ++ 0x选项.

我对发生的事感到困惑.出于某种原因,它似乎没有将我的语法识别为有效.为了以防万一,我做了一个yum更新,但它似乎仍然没有认识到使用lambdas.

sya*_*yam 8

C++ 11 lambdas至少需要GCC/G ++ 4.5,它们不适用于G ++ 4.4.

请参阅http://gcc.gnu.org/projects/cxx0x.html(或者,因为它现在已经是缓存版本).