将在c ++中基于范围的for循环保留索引顺序 [英] will range based for loop in c++ preserve the index order

查看:75
本文介绍了将在c ++中基于范围的for循环保留索引顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在c ++ 11中,如果我在向量上使用基于范围的循环,是否可以保证迭代顺序?
说,是否可以保证以下代码块具有相同的输出?

in c++11, if I use a range based for loop on vector, will it guarantee the iterating order? say, will the following code blocks are guaranteed for same output?

vector<T> output;
vector<U> V;
for( auto v: V) output.push_back(f(v));

vs

for(int i =0; i < V.size(); ++i) output.push_back(f(V[i])); 

如果不是 vector 而是地图等?

推荐答案

是的,保证这两个代码可以做到相同。尽管我没有该标准的链接,但您可以在此处。我引用:您可以将其理解为对于v中的所有x,从v.begin()开始,迭代到v.end()。

Yes the two codes are guaranteed to do the same. Though I don't have a link to the standard you can have a look here. I quote: You can read that as "for all x in v" going through starting with v.begin() and iterating to v.end().

这篇关于将在c ++中基于范围的for循环保留索引顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆