index có ý nghĩa gì trong chương trình này? tạo sao mình không thể dùng sum += arr[j]? khi sử dụng mảng 1 chiều này có ưu điểm gì hơn mảng 2 chiều không ? tại sao? (đây là topic đầu tiên của mình xin thông cảm nếu mình có sai sót gì)
Hỏi về cấp phát động mảng 1 chiều
- index ở đây là chỉ số, vị trí các phần từ trong mảng. ở đây index chạy từ 0 đền n*m
- không dùng arr[j] vì j=0:m => sum luôn có giá trị không đổi, đó là tổng các phần tử của hàng đầu tiên.
- so sánh giữa mảng 1 chiều và 2 chiều thì bạn tham khảo ở đây, mình mới tìm cũng chưa có đọc qua =)) :
https://stackoverflow.com/questions/17259877/1d-or-2d-array-whats-faster
4 Likes
- Mảng 2 chiều phải cấp phát cho từng dòng, thay vì chỉ cần một lần cho mảng 1 chiều.
- Do mảng 2 chiều cấp phát nhiều lần nên phí bộ nhớ.
- Cấp phát có thể gây lỗi giữa chừng ở dòng thứ m.
- Mảng 2 chiều không lợi về cache do địa chỉ các dòng không liên tục.
- Do không chắc chắn các truy cập là liên tục nên không tối ưu được.
Vậy nếu ma trận cố định được số dòng hoặc số cột thì dùng mảng 1 chiều tốt hơn.
5 Likes