范围for循环中的多个语句

  • 本文关键字:语句 for 循环 范围 c++
  • 更新时间 :
  • 英文 :


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

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

按照C++11 的思路

我想要这样的东西:

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

有办法做到这一点吗?

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

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

仅为了完整性,我只想指出,可以通过(欺骗和(聚合它们来在For循环的init列表中定义这两个:

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

现场观看

但正如你可能已经注意到的那样,它冗长、丑陋,而且完全不值得。雷米的答案中的解决方案至少好100倍。

最新更新