"for num in [1,4,5]" Python 等效于 C++?

"for num in [1,4,5]" Python equivalent in C++?

本文关键字:Python C++ num for in      更新时间:2023-10-16

C++中是否有直接类比?

for num in [1,4,5] :

使用 num=1 遍历循环,然后是 4 ,然后是 5 。如果我在此循环中呼叫 continue,它会转到下一个号码,无论我在哪里调用它。

C++有类似的结构吗?

在 C++11 中,以下内容是合法的:

for (auto num : {1,4,5})
{
    // loop body
}

{1,4,5}这里是std::initializer_list<int>的一个实例。

在 C++03 中,最接近的等价物是:

int values[] = {1,4,5};
for (int *p = values; p != values + sizeof(values) / sizeof(*values); ++p) {
    int num = *p;
    ...
}

当您不再需要它时,已添加到 C++11 中作为std::end定义的常见事情是:

template <typename T, size_t N>
T *endof(T (&ra)[N]) {
    return ra + N;
}

然后你像这样使用它:

int values[] = {1,4,5};
for (int *p = values; p != endof(values); ++p) {
    int num = *p;
    ...
}

因此,对于C++03,简短的回答是"否",没有类似的结构。

带有前向迭代器的vector<int>

编辑:

伙计,我的C++生锈了...

#include <iostream>
#include <vector>
int main(int argc, char *argv[])
{
  int ints[] = {1, 4, 5};
  std::vector<int> v (ints, ints + 3);
  for (std::vector<int>::iterator i = v.begin(); i != v.end(); i++)
  {
    std::cout << *i << std::endl;
  }
}

类似的是创建这个整数的 stl-Vector,并使用 for 循环和迭代器对其进行迭代。但我认为,在C++这样做并不是一件非常实际的事情。

正如 Ignacio 的回答中所述,来自标准模板库的向量是通往这里的方式。cplusplus.com 条目中的第一个示例似乎是您想要的。

Boost.Foreach 是你正在寻找的东西。