sort
でラムダ関数を使用しようとしましたが、「セグメンテーションフォールト」エラーが発生していました。私は、次のコードを簡素化するために管理:std :: sortはC++でラムダ関数で動作する必要がありますか?0x/C++ 11?
#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;
}
私は
g++ -std=gnu++0x test2.cpp && ./a.out
を使用してのUbuntu 11.04(x64)の中で、このコードをコンパイルして実行します。
形式(large_integer、1008)、数(0,1008)のペアが多数印刷され、「セグメンテーションフォルト」で終了します。
ちょうど発言として、コードで最初の17要素をソートするだけです。 –
はい。この事実はコードの唯一のコメントに書かれています。 – fiktor
@KerrekSB: "//以下は、配列の最後の要素以外のすべてをソートすると予想されます。" – Griwes