Qt boucle foreach de commande vs pour la boucle pour QList

Lors d'une itération dans 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 d'un standard de for boucle.

Ma question est, sera le foreach toujours retourner les articles dans l'ordre numérique, de par l'indice de ce genre, pour les conteneurs qui ont ordre naturel (comme QList et QVector)? Par exemple, sont les suivants 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";
}
  • Vous ne pouvez pas utiliser [i] l'opérateur sur la liste, mais seulement dans le tableau (vecteurs ...) d'avoir un accès aléatoire sur la mémoire. En outre, essayez le c++11 foreac boucle : (pour(T& item : liste) {/*du code */}). Peut-être cela peut vous aider
  • Nope, operator[] fonctionne très bien. Voir: qt-project.org/doc/qt-4.8/qlist.html#operator-5b-5d
  • Ok, mais pas dans la STL. Alors, pour ton problème, le plus efficace est d'utiliser des itérateurs à l'aide begin() et end() (j'ai vraiment ne sais pas ce que le foreach macro à faire ...)
InformationsquelleAutor Freedom_Ben | 2013-05-29