Qt为QList预测循环排序与循环

Fre*_*Ben 22 c++ foreach qt for-loop qt4

当通过迭代QList<T>一个foreach循环,在测试中,我进行了,因为它们与一个标准的项目都以相同的顺序返回for循环.

我的问题是,foreach对于具有自然排序的容器(如QListQVector),总是按照这样的索引按数字顺序返回项目吗?例如,以下内容总是相同的吗?

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";
}
Run Code Online (Sandbox Code Playgroud)

cma*_*t85 32

foreach宏(又名.Q_FOREACH)使用begin()end()所述容器的迭代器请求方法.

因此,如果您的容器是a QList或者QVector那么您的示例将始终是等效的.您可以在此处查看foreach源代码.

foreach宏也不是很大,虽然,它使容器的副本-所以只能在支持共享隐含的容器使用.for( : ) {}如果可用,使用C++ 11 循环,否则Boost具有更好的等价物.