[英]Qt foreach loop ordering vs. for loop for QList
当使用foreach
循环迭代QList<T>
时,在我进行的测试中,项目返回的顺序与使用标准for
循环时的顺序相同。
我的问题是,对于具有自然排序的容器(如QList
和QVector
), foreach
总是按这样的索引以数字顺序返回项目? 例如,以下是否总是等价的?
QList<T> list;
for( int i=0; i<list.count(); ++i )
{
// process items in numerical order by index
// do something with "list[i]";
}
foreach( T item, list )
{
// will items always be processed in numerical order by index?
// do something with "item";
}
foreach
宏(又名Q_FOREACH
)使用容器的begin()
和end()
迭代器请求方法。
因此,如果您的容器是QList
或QVector
那么您的示例将始终是等效的。 您可以在此处查看foreach
源代码。
foreach
宏虽然不是很好,但它制作了容器的副本 - 因此仅用于支持隐式共享的容器。 如果可用,请使用 C++11 for( : ) {}
循环,否则 Boost 有一个更好的等价物。
根据这里找到的信息, foreach
比第一个慢得多,表明它不等价。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.