Khi tôi làm một cái gì đó như thế này:Làm thế nào để C++ 11 dựa trên phạm vi cho vòng lặp biết kích thước mảng?
int my_array[5] = {1, 2, 3, 4, 5};
for (int &x : my_array) {
x *= 2;
}
C++ 11 rõ ràng biết rằng mảng của tôi chỉ có 5 yếu tố. Thông tin này có được lưu trữ ở đâu đó trong đối tượng my_array không?
Nếu có, có lý do chính đáng nào tại sao nó không được cung cấp cho tôi với tư cách là nhà phát triển (hay là nó?!?!?)? Có vẻ như rất nhiều vấn đề của thế giới sẽ được giải quyết nếu các nhà phát triển C++ luôn biết giới hạn của các mảng mà họ đang xử lý.
Ok. Vì vậy, có bất kỳ lý do cụ thể tại sao một my_array.size không tồn tại? – MrFox
@suslik: Chắc chắn, vì mảng không phải là loại lớp và do đó không thể có các hàm thành viên. Nhưng bạn có thể viết một cách tự nhiên một mẫu hàm miễn phí 'array_size' để tạo ra giá trị mong muốn, hoặc sử dụng [' std :: extent'] được tạo sẵn (http://en.cppreference.com/w/cpp/types/extent). –
Làm thế nào tôi sống cuộc sống của tôi không biết về điều này quá lâu ... Tôi đổ lỗi cho std :: vector :). – MrFox