ループでforeach
ループを反復すると、実行したテストでは、標準for
ループと同じ順序で項目が返されます。Qt foreachループ順序付けとQListのforループ
私の質問では、foreach
は、自然順序(例えばQList
およびQVector
など)の容器に対して、このようなインデックスで常に項目を数値順に返しますか?例えば、は常にに相当しますか?情報に基づいて
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";
}
リストで[i]演算子を使用することはできませんが、メモリにランダムアクセスするにはテーブル(vectors ...)でのみ使用できます。さらに、C++ 11 foreacループを試してください:((T&item:list){/ * some code * /})。これが助けることができるかもしれない – Krozark
@ Krozarkいいえ、 '演算子[]'はうまく動作します。参照:http://qt-project.org/doc/qt-4.8/qlist.html#operator-5b-5d –
@NikosC。 OKですが、STLにはありません。あなたの問題では、begin()とend()を使ってイテレータを使うのが最も効率的です(foreachマクロが何をしているのかわかりません...) – Krozark