Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что означают квадратные скобки [ ] в вызовах функций C++ STL?

Богомолов Александр Ученик (97), закрыт 9 лет назад
В примерах по STL встретил такой синтаксис вызова функции STL:
sort(line.begin(), line.end(), [c](const Vec3&a,const Vec3&b)
{... здесь сама функция сравнения ...}
);
Что означают квадратные скобки перед функцией сравнения?
Visual C++ ругается на этот синтаксис... Как можно написать это по другому?
Лучший ответ
zhodzky Просветленный (48981) 9 лет назад
Это лямбда-выражение. Точнее не сами скобки, а вся функция [c](const Vec3&a,const Vec3&b)
{... здесь сама функция сравнения ...} - является лямбдой. Это новая фича добавленная в C++ в стандарте c++11. Если ваш компилятор ругается, то скорее всего он просто устаревший. В квадратных скобках указываются переменные которые вы вводите в область видимости лямбда выражения (по умолчанию они вводятся по значению). По другому сделать можно, читайте про работу с stl, но проще сменить компилятор.
Остальные ответы
Похожие вопросы