我試圖使用lambda函數sort
,但得到「分段錯誤」錯誤。我設法簡化代碼以執行以下操作:使用應該std ::排序工作與C++ 0x/C++ 11中的lambda函數?
g++ -std=gnu++0x test2.cpp && ./a.out
#include <iostream>
#include <algorithm>
int main()
{
const int len = 18;
int intArr[len];
for (int i=0;i<len;i++) intArr[i]=1000+i;
// The following is expected to sort all but the last element of the array
std::sort(intArr, intArr + len -1, [](int a, int b)
{
std::cout<<"("<<a<<", "<<b<<")\n";
return (a<b?-1:(a>b?1:0));
});
return 0;
}
予編譯和運行在Ubuntu 11.04(64)該代碼。
它會打印大量的表單(large_integer,1008),幾個(0,1008)對,並以「分段錯誤」退出。
就像一句話,你只是用你的代碼排序前17個元素。 –
是的。這個事實在代碼的唯一評論中被注意到。 – fiktor
@KerrekSB:「//下面預計排序除了陣列的最後一個元素」 – Griwes