像在python中一样迭代C++

her*_*cho 4 c++ python loops

我想在一组值上迭代C++.在python中,它看起来像

for v in [v1, v2, v3]:
    do_something()
Run Code Online (Sandbox Code Playgroud)

在C++中使用它的正确方法是什么?

Jes*_*uhl 8

for (const auto& v : {v1, v2, v3}) { do_something(); }
Run Code Online (Sandbox Code Playgroud)

将是等效的(除了初始化列表中的元素将在概念上被复制的事实- 即使优化器省略了这些副本 - 因此它们需要是可复制的).


Gra*_*ams 6

你可以使用auto关键字和基于for循环的范围

 std::vector<int> v = {0, 1, 2, 3, 4, 5};

 for (auto const& e:v){
      // here e is value from v
 } 
Run Code Online (Sandbox Code Playgroud)

更多信息:https://en.cppreference.com/w/cpp/language/range-for

  • 请注意,`auto`,`auto&`,`const auto &`和`auto &&`具有不同的含义,并且不清楚哪个适合这里. (2认同)