Hỏi về cấp phát động mảng 1 chiều

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ì)

  • 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
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?