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

C++ 我可以创建一个包含多个类型声明的for循环吗?,c++,C++,例如: 我能做些什么,可以让我做到这一点: for(TiXmlElement * pChild = elem->First(), int i=0; // note multiple type declarations pChild; pChild=pChild->NextSiblingElement(), i++) // note multiple types { //do stuff } 可能有一个boost头?块不必附加到函数或条件。您可以用块包围任何

例如:

我能做些什么,可以让我做到这一点:

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

可能有一个
boost
头?

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

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

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

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

自C++17以来,可以通过以下方式引入多个变量:

如预期,
pChild
是一个
tixmlement*
,而
i
是一个
int

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