Khi lặp qua một QList<T>
với vòng lặp foreach
, trong các thử nghiệm tôi đã tiến hành các mục được trả về theo cùng thứ tự như với vòng lặp tiêu chuẩn for
.Qt foreach vòng lặp đặt hàng so với vòng lặp cho QList
Câu hỏi của tôi là, foreach
luôn trả lại các mục theo thứ tự số theo chỉ mục như thế này, đối với các vùng chứa có thứ tự tự nhiên (như QList
và QVector
)? Ví dụ: sau đây luôn luôn tương đương?
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";
}
Bạn không thể sử dụng toán tử [i] trong danh sách, nhưng chỉ trong bảng (vectơ ...) để có một dấu ngẫu nhiên trên bộ nhớ. Hơn nữa, hãy thử C++ 11 foreac loop: (cho (T & item: list) {/ * một số mã * /}). Có thể điều này có thể giúp – Krozark
@Krozark Nope, 'operator []' hoạt động tốt. Xem: http://qt-project.org/doc/qt-4.8/qlist.html#operator-5b-5d –
@NikosC. Ok, nhưng không phải trong STL. Vì vậy, đối với vấn đề của bạn, hiệu quả nhất là sử dụng vòng lặp bằng cách sử dụng begin() và end() (tôi thực sự không biết macro foreach làm gì ...) – Krozark