как на С++ реализовать что то подобное?
на 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, то заведите отдельную переменную для количества итераций либо цикл до предпоследнего + дополнительная итерация и т.п..