Trong C++11, có hai vòng lặp trên tất cả các phần tử (phạm vi dựa trên và for_each). Có lý do nào để thích cái này hơn cái kia hay là có tình huống nào phù hợp hơn?Sử dụng tiêu chuẩn ưu tiên: phạm vi dựa trên hoặc tiêu chuẩn: for_each
for (auto& elem: container) {
// do something with elem
}
std::for_each(container.begin(), container.end(),
[](Elem& elem) {
// do something with elem
});
Ý tưởng của tôi sẽ là người đầu tiên là đơn giản và tương tự như dao vòng có trụ sở tại các ngôn ngữ khác trong khi thứ hai cũng làm việc cho chuỗi mà không phải là container đầy đủ và thứ hai là tương tự hơn để std
-algorithms khác.
Tôi tò mò về cách thực sự đúng cách * sử dụng * dựa trên phạm vi cho, vì vậy vui lòng xem câu hỏi của tôi http://stackoverflow.com/questions/9994789/proper-style-for-declaration-in -range-based-for – Potatoswatter
Tôi đã thêm một ví dụ 'for_each' đơn giản. Tôi nghĩ tôi đã thấy một tin nhắn yêu cầu nhưng tôi không chắc nữa ... – juanchopanza
@juanchopanza: Tôi đã yêu cầu một cái dựa trên lambda, nhưng tôi đã xóa nó bởi vì tại thời điểm tôi đăng bình luận, tôi đọc nhận xét của Potatoswatter rằng truy vấn một lambda là không thể. Tuy nhiên, đây là một ví dụ hay về nơi for_each có thể phù hợp hơn. – stefaanv