как на С++ реализовать что то подобное?

на python вот такой код,

quares = []
    for x in range(5):
        squares.append(lambda: x**2)

соответственно он будет возвращать 16 всегда

squares[2]()

но мне захотелось такое сделать на плюсах, как это можно?


Ответы (1 шт):

Автор решения: karmik

Почти так же:

#include <vector>
#include <functional>
#include <iostream>


int main() {
    std::vector<std::function<int()>> squares;
    int x;
    
    for (x = 0; x < 5; ++x) {
        squares.push_back([&x](){return x * x;});
    }

    std::cout << squares[2]() << '\n';
}

Однако, в отличие от питона, будет возвращать 5**2, потому что цикл останавливается на 5, а не на 4. Если надо чтобы именно на 4, то заведите отдельную переменную для количества итераций либо цикл до предпоследнего + дополнительная итерация и т.п..

→ Ссылка