Trong C++ 11 bây giờ chúng tôi có thể làm:Có C++ 11 cho vòng lặp cho phép tối ưu hóa mới hoặc tốt hơn?
void dosomething(std::vector<Thing>& things)
{
for(Thing& thing : things)
{
dofoo(thing);
wiizzz(thing);
tadaa(thing);
}
}
Tôi biết rằng việc bổ sung và sử dụng lambda là cú pháp đường nhưng nó cung cấp cơ hội tối ưu hóa thú vị.
Còn vòng lặp for thì sao? Nó chỉ là cú pháp cú pháp hoặc trình biên dịch có thể tối ưu hóa một số trường hợp mà nó không thể hoặc sẽ là quá khó để làm với vòng viết tay?
Có 'for (Thing & thing: things)' trong C++ 0x chỉ định một thứ tự? hoặc có thể 'điều' xuất hiện theo thứ tự nào? – Inverse
Nó chỉ lấy iterator từ thành viên begin() của container đã cho (nếu nó là một lớp) và lặp lại cho đến khi nó đạt đến trình kết thúc() iterator. Vì vậy, nó phụ thuộc vào vòng lặp hoặc phụ thuộc vào vùng chứa nếu bạn muốn. Trong trường hợp của một mảng thô (hoặc mảng ngữ nghĩa lớp quá?) Nó sẽ chỉ đi từ một [0] và kết thúc khi nó nhận được đến một [kích thước]. – Klaim