我可以创建一个包含多个类型声明的for循环吗?

时间:2011-02-23 12:41:09

标签: c++

例如:

我能做些什么,这可能让我这样做:

for(TiXmlElement * pChild = elem->First(), int i=0; // note multiple type declarations
    pChild; 
    pChild=pChild->NextSiblingElement(), i++) // note multiple types
{
    //do stuff
}

也许有一个boost标题?

3 个答案:

答案 0 :(得分:8)

不。

如果要将变量的范围限制为循环,只需添加另一个范围:

{
    TiXmlElement * pChild = elem->First();
    int i = 0;
    for(; pChild; pChild=pChild->NextSiblingElement(), i++)
    {
        //do stuff
    }
}

答案 1 :(得分:5)

块不必附加到函数或条件。您可以使用块包围任何代码段,以将临时变量的范围限制为该块。

{
    TiXmlElement * pChild;
    int i;
    for ( pChild = elem->First(), i = 0;
          pChild;
          pChild = pChild->NextSiblingElement(), ++i )
    {
        // do stuff
    }
}

答案 2 :(得分:2)

从C ++ 17开始,structured bindings可以引入多个变量:

// multiple type declarations
for (auto [pChild, i] = std::tie(elem->First(), 0); pChild; pChild = pChild->NextSiblingElement(), ++i) {
    // ...
}

pChildTiXmlElement*,而iint