Помогите с фибоначи и лямбдой

306
11 декабря 2018, 05:10

Нужно заполнить дек числами фибоначи при помощи алгоритма generate и лямбда функции.Может кто подкинет идейку через анонимную лямбду?А то через просто функцию сам догадываюсь

Answer 1

Что-то типа

int main(int argc, const char * argv[])
{
    deque<int> fib;
    generate_n(back_inserter(fib),40,[](){static int f0 = 0, f1 = 1; 
                                          int save = f0; f0 = f1; 
                                          f1 += save; return save; });
    for(auto i: fib) cout << i << endl;
}
Answer 2

Элегантнее, наверное, все-таки через изменяемую лямбду:

#include <iostream>
int main() {
    auto f = [x0 = 0u, x1 = 1u]() mutable -> unsigned { auto retVal = x0; x0 = x1; x1 = retVal + x0; return retVal; };
    std::cout << f() << '\n';
    std::cout << f() << '\n';
    std::cout << f() << '\n';
    std::cout << f() << '\n';
    std::cout << f() << '\n';
    std::cout << f() << '\n';
}
READ ALSO
foreach в функции

foreach в функции

Подскажите пожалуйста почему такая запись выдаёт ошибку"не найдена соответствующая функция begin, необходимая для этого основанного на диапазоне...

714
Передача массива в функцию не обьявляя его

Передача массива в функцию не обьявляя его

Как можно передать массив в функцию не обьявляя его?

181
Управление динамической памятью в С++

Управление динамической памятью в С++

Подскажите есть ли правила хорошего тона или общепринятые соглашения по управлению динамической памятью в C++

216
Передается указатель вместо копии

Передается указатель вместо копии

Почему адрес objects у form, user,user2,user3 одинаковый? И как это исправить?

202