范围for循环中的多个语句

时间:2018-12-16 05:47:05

标签: c++

我想知道是否可以转换此表达式

<html>
<head>
<title>Page Title</title>
<style>
body{display:table}
.row{display:table-row}
.cell{display:table-cell}
.floatLeft{float:left}
.box1{background-color:#f00;width:100px;height:400px}
.box2{background-color:#0f0;width:400px;height:100px}
.box3{background-color:#00f;width:200px;height:300px}
.box4{background-color:#f0f;width:200px;height:300px}
</style>
</head>
<body>
<div class="row">
    <div class="cell box1"></div>
    <div class="cell">
        <div class="row">
            <div class="cell box2 "></div>
        </div>
        <div class="row">
            <div class="cell box3 floatLeft"></div>
            <div class="cell box4 floatLeft"></div>
        </div>
    </div>
</div>
</body>
</html>

与C ++ 11相似

我想得到这样的东西:

vector<Mesh>::iterator vIter;
for(int count = 0, vIter = meshList.begin(); vIter < meshList.end(); vIter++, count++)
{
...
}

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:5)

否,这是不可能的。您可以做的最好的事情如下:

int count = 0;
for(auto &mesh : meshList)
{
    ...
    ++count;
}

答案 1 :(得分:1)

仅出于完整性考虑,我只想指出,您可以通过(作弊和)汇总它们在for循环的init列表中定义这两个(如果您确实想这样做):< / p>

for(struct { int count; decltype(meshList)::iterator vIter; } _{0, meshList.begin()} ;
    _.vIter < meshList.end(); _.vIter++, _.count++)
{
  // ...
}

See it live

但是正如您可能已经注意到的那样,它很冗长,丑陋,完全不值得。 Remy's answer中的解决方案至少要好100倍。