繁体   English   中英

Qt foreach 循环排序与 QList 的 for 循环

[英]Qt foreach loop ordering vs. for loop for QList

当使用foreach循环迭代QList<T>时,在我进行的测试中,项目返回的顺序与使用标准for循环时的顺序相同。

我的问题是,对于具有自然排序的容器(如QListQVector ), 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()迭代器请求方法。

因此,如果您的容器是QListQVector那么您的示例将始终是等效的。 您可以在此处查看foreach源代码。

foreach宏虽然不是很好,但它制作了容器的副本 - 因此仅用于支持隐式共享的容器。 如果可用,请使用 C++11 for( : ) {}循环,否则 Boost 有一个更好的等价物。

根据这里找到的信息, foreach比第一个慢得多,表明它不等价。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM