Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;对于[1,4,5]中的num;C+中的Python等价物+;? < C++中是否有直接的模拟? for num in [1,4,5] :_C++_Python_For Loop - Fatal编程技术网

&引用;对于[1,4,5]中的num;C+中的Python等价物+;? < C++中是否有直接的模拟? for num in [1,4,5] :

&引用;对于[1,4,5]中的num;C+中的Python等价物+;? < C++中是否有直接的模拟? for num in [1,4,5] :,c++,python,for-loop,C++,Python,For Loop,使用num=1,然后使用4,然后使用5迭代循环。如果我在这个循环中调用continue,它将转到下一个我可以调用它的号码 在C++中,是否存在类似的结构?< P> A向量< /代码>,其前向迭代器。 编辑: 我的C++是生锈的……/p> #include <iostream> #include <vector> int main(int argc, char *argv[]) { int ints[] = {1, 4, 5}; std::vector<in

使用
num=1
,然后使用
4
,然后使用
5
迭代循环。如果我在这个循环中调用continue,它将转到下一个我可以调用它的号码

在C++中,是否存在类似的结构?

< P> A<代码>向量< /代码>,其前向迭代器。

编辑:

我的C++是生锈的……/p>
#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;
  }
}
#包括
#包括
int main(int argc,char*argv[])
{
int ints[]={1,4,5};
标准:向量v(整数,整数+3);
对于(std::vector::迭代器i=v.begin();i!=v.end();i++)
{

STD::CUT> P>类似的事情是创建一个整数的STL向量,用for循环和迭代器迭代它,但是在C++中,这不是一个非常实用的事情,我想,

< P> C++ 11,下面是合法的:

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

{1,4,5}
这是您正在寻找的
std::initializer\u list
的一个实例。

在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;
}

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

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

您有它的用法示例吗?为什么要创建一个向量并对其进行迭代,您可以对用于初始化的数组进行迭代序列化向量?@Steve:因为它可能已经是来自其他地方的向量。啊,然后我们对提问者的提问有不同的想法。我认为这与问题相关,即使用的数字已经指定到位。如果没有,那么值得注意的是,使用迭代器循环的模式适用于任何可以指定的范围使用开始和结束迭代器进行验证。
vector
只是容器的一个示例,可能是最常用的。@Charles:必须再次检查标准,即在这种情况下,一个简单的初始值设定项列表是合法的。:-]由于随着时间的推移,这个列表将更加适用,我将投票作为答案(尽管Steve Jessop下面的回答也非常有效)这段代码对我很有用——谢谢!我没有C++11,所以我不能使用另一个答案,但这是我没有提及的错误。有没有办法让我接受两个答案?@AgainstASicilian:你只能接受一个答案。所以应该永远存在,所以C++11答案会随着时间的推移适用于更多的人。这是值得的不管你是否可以使用一组限制的C++ 11个特征。取决于编译器的实现方式和样式指南的允许。在C++中迭代容器是不实用的。什么??ILDJARN:仅仅为迭代一组已知的数字而创建一个向量是不实际的。首先你必须迭代OV。er用于创建向量的已知数字集,在C++11中使用初始化列表,在C++03中使用数组。无论哪种方式,都可以去掉中间人并去掉向量。@Steve:Boost.array、Boost.Assign和Qt的
QList::operator之间
int values[] = {1,4,5};
for (int *p = values; p != endof(values); ++p) {
    int num = *p;
    ...
}