像在python中一样迭代C ++

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模式工作了。

引用标准::应用