Iterate in C++ like in python
我想在C++中迭代一组值。在python中,它看起来像
1 2 | for v in [v1, v2, v3]: do_something() |
在C++中正确的方法是什么?
1 | for (const auto& v : {v1, v2, v3}) { do_something(); } |
将是等效的(除了初始值设定项列表中的元素将在概念上被复制的事实-即使优化器删除了这些副本-所以它们将需要是可复制的)。
可以使用auto关键字和基于范围的for循环
1 2 3 4 5 | std::vector<int> v = {0, 1, 2, 3, 4, 5}; for (auto const& e:v){ // here e is value from v } |
更多信息:https://en.cppreference.com/w/cpp/language/range-for
STD如何:应用C++ 17功能:
1 | std::apply([](auto&& v){ do_something_over_v();}, std::tie(v1,v2,v3) ) ; |
- 不需要复制v1、v2、v3元素,只需要引用它们。
- 无需标识v1、v2、v3类型。
如果你没有C++ 17,只需从引用中复制实现,我就知道为C++ 14模式工作了。
引用标准::应用