2

在 C++ 中有直接的类似物吗?

for num in [1,4,5] :

num=1使用, then 4, then遍历循环5。如果我在这个循环中调用 continue ,它会转到下一个我可以调用它的号码。

C++中有类似的结构吗?

4

6 回答 6

9

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

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

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

于 2012-06-15T16:11:42.943 回答
4

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

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

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

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,简短的回答是“不”,没有类似的结构。

于 2012-06-15T16:13:06.720 回答
2

Avector<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;
  }
}
于 2012-06-15T16:10:15.130 回答
0

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

于 2012-06-15T16:11:41.213 回答
0

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

于 2012-06-15T16:11:55.823 回答
0

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

于 2012-06-15T16:22:24.737 回答