Как получить из лямбды значение, которое она вернёт?

257
19 ноября 2017, 16:16

Я бы хотел таким образом получить максимальный элемент field, но не понимаю, как получить возвращаемое значение.

int res = [field](){
            int max = 0;
            for (int a = 0; a < 4; a++)
                for (int b = 0; b < 4; b++)
                    if (field[a][b].value > max)
                        max = field[a][b].value;
            return max;
        };
        qDebug() << "Record = " + QString::number(k);
Answer 1

Если вопрос о лямбде (а не о том, что она делает), то:

int res = [field](){ 
    ...
    return max;
}();

Обратите внимание на скобочки () после закрывающей фигурной скобки.

Но! если лямбда нужна один раз - то зачем с ней заморачиваться вообще?

А если несколько - то советовал бы

auto f = [field](){ 
    ...
    return max;
};
...
int res = f();
READ ALSO
Pulseview build windows msys2

Pulseview build windows msys2

Пытаюсь собрать sigrok pulseview использую msys2Все время получаю ошибки или не найти хедеры или проблемы с библиотеками у линковщика, последнее что...

245
Скриншот с помощью С++

Скриншот с помощью С++

Делаю параграмму на С++ которая через интернет будет передавать скриншот рабочого стола и сохранять на другом компе

276
Сигналы и слоты на Qt и QML

Сигналы и слоты на Qt и QML

Как связать QML интерфейс и некий гибрид MVC паттерна ? Суть в том, что есть класс Model и в нем поля string и bool и методы get/setДля контроля моделями создается...

284
C++ работа с другой программой

C++ работа с другой программой

ЗдравствуйтеНедавно получил задание от друга, создать простую программу, которая поможет работать ему с другой программой

245