Cho một vector, vc,
ai có thể lặp qua các vector với một phạm vi cho:Có nên sử dụng một phạm vi cho vòng lặp thay vì các vòng lặp trên một véc-tơ không?
for (auto c : vc)
std::cout << c;
Hoặc với một iterator:
for (auto it = vc.cbegin(); it != vc.cend(); ++it)
std::cout << *it;
Có một lý do chức năng để sử dụng một phương pháp trong khác, hay đây chỉ là vấn đề về phong cách?
lưu ý rằng khi bạn sử dụng 'tự động' trong vòng lặp dựa trên phạm vi, bạn sẽ nhận được * bản sao * của các phần tử vectơ, nếu đối tượng của bạn đắt tiền để sao chép, có thể mang lại các vấn đề về hiệu năng không mong muốn. Với việc sử dụng các trình vòng lặp, bạn lấy lại tham chiếu const, do đó các bản sao không xảy ra ở đây. Một cách để lấy lại tham chiếu const trong phạm vi dựa trên là 'for (const auto & c: vc) ...' –