在C ++中是否直接类似于此?
for num in [1,4,5] :
使用num=1
,然后4
,然后5
循环循环。如果我在这个循环中呼叫继续,它会转到下一个号码,无论我在哪里呼叫它。
C ++中是否有类似的结构?
答案 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条目的第一个示例似乎就是您想要的。