Qt boucle foreach de commande vs pour la boucle pour QList
lors de l'itération à travers un QList<T>
avec un foreach
boucle, dans les tests que j'ai effectué les articles sont retournés dans le même ordre qu'ils sont avec un standard for
boucle.
ma question Est, est-ce que le foreach
toujours retourner les articles dans l'ordre numérique par index comme ceci, pour les conteneurs qui ont un ordre naturel (comme QList
et QVector
)? Par exemple, sont les suivantes toujours équivalent?
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";
}
2 réponses
foreach
macro (alias. Q_FOREACH
) utilise le begin()
et end()
méthodes de requête iterator du conteneur.
donc si votre conteneur est un QList
ou QVector
alors vos exemples seront toujours équivalents. Vous pouvez consulter le foreach
code source ici.
foreach
macro n'est pas si grande, il rend une copie du conteneur - utilisez donc seulement sur les conteneurs qui prennent en charge implicite de partage. Utiliser C++11 for( : ) {}
boucles si disponibles, sinon Boost a un équivalent qui est de qualité supérieure.