以下のコードはVisual Studioで正常にソートされています。
しかし、Ubuntu GCC 4.4.7コンパイラでは、エラーがスローされます。このタイプの構文に慣れていないようです。 GCCでコードを動作させるためにこの行を修正する方法はありますか? (コンパイラはリモートですので、GCCバージョンもアップグレードできません)。 私は右ここでやっていることです:自分の体力がstd :: sort関数(GCC 4.4)のコンパイラエラー
//B is a Vector of class Bird
//fitness is a double - member of Bird objects
vector<Bird> Clone = B;
sort(Clone.begin(), Clone.end(), [](Bird a, Bird b) { return a.fitness> b.fitness; });
//error: expected primary expresssion before '[' token
//error: expected primary expresssion before ']' token...
値についてのベクトルBの要素をソートする(注:行のこの3作品はGCCにMSVCで成功したコンパイルではなく)
私の答えは
bool X_less(Bird a, Bird b) { return a.fitness > b.fitness; }
std::sort(Clone.begin(), Clone.end(), &X_less);
です。それは機能かどうか?私は技術的な名前は知らないが、うまくいくようだ。私はC++に慣れていません。
せずにエラーを与え、あなたはラムダ関数が含まれ、C++ 11を有効にする必要がありあなたはフラグを使用していますか? – Soren
コンパイラに '-std = C++ 11'や' -std = C++ 0x'パラメータを渡すようにIDEやmakefileを作る必要があります – Slava
[lambdasはサポートされていません](https:// gcc .gnu.org/gcc-4.4/cxx0x_status.html)を参照してください。 – Quentin