Код, сортирующий в Visual Studio успешно.
Но в компиляторе Ubuntu GCC 4.4.7 возникает ошибка. Кажется, он не знаком с этим типом синтаксиса. Как исправить эту строку, чтобы код работал в GCC? (компилятор удален, поэтому я не могу обновить версию GCC). Что я делаю здесь: сортировка элементы вектора B относительно их пригодности значенияОшибка компилятора в функции 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...
(Примечания: это 3 части линий компилирования успешных в MSVC, но не в НКУ)
моего ответа is
bool X_less(Bird a, Bird b) { return a.fitness > b.fitness; }
std::sort(Clone.begin(), Clone.end(), &X_less);
Кажется, что нужно работать. Это функция или нет? Я не знаю его технического названия, но, похоже, он работает. Я не очень хорошо знаком с C++.
Какой компилятор флаги вы используете? – Soren
вам нужно сделать свой IDE или makefile для передачи параметру '-std = C++ 11' или' -std = C++ 0x' компилятору – Slava
Похоже, что [lambdas не поддерживается] (https: // gcc .gnu.org/gcc-4.4/cxx0x_status.html) в GCC 4.4. – Quentin