2

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

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 选项。

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

4

1 回答 1

8

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

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

于 2013-03-19T01:13:07.970 回答