我想知道是否可以转换这个表达式
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倍。