“for [1,4,5]中的num”C ++中的Python等价物?

时间:2012-06-15 16:09:00

标签: c++ python for-loop

在C ++中是否直接类似于此?

for num in [1,4,5] :

使用num=1,然后4,然后5循环循环。如果我在这个循环中呼叫继续,它会转到下一个号码,无论我在哪里呼叫它。

C ++中是否有类似的结构?

6 个答案:

答案 0 :(得分:9)

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

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

带有前向迭代器的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;
  }
}

答案 3 :(得分:0)

类似的事情是创建一个这个整数的stl-Vector并用for循环和迭代器迭代它。但我认为用C ++做这件事并不是很实际。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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