Venot Asked:2020-07-16 04:01:27 +0000 UTC2020-07-16 04:01:27 +0000 UTC 2020-07-16 04:01:27 +0000 UTC 如何在 C++ 中实现这样的东西?[关闭] 772 在python中,这是代码, quares = [] for x in range(5): squares.append(lambda: x**2) 所以它总是会返回 16 squares[2]() 但我想这样做是有好处的,这怎么可能? python 1 个回答 Voted Best Answer karmik 2020-07-16T13:25:40Z2020-07-16T13:25:40Z 差不多一样: #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'; } 但是,与 python 不同的是,它会返回5**2,因为循环停止在5而不是在4。如果有必要完全打开4,则为迭代次数创建一个单独的变量,或者循环到倒数第二次 + 附加迭代等。
差不多一样:
但是,与 python 不同的是,它会返回
5**2,因为循环停止在5而不是在4。如果有必要完全打开4,则为迭代次数创建一个单独的变量,或者循环到倒数第二次 + 附加迭代等。