Có cách nào tăng được kích thước mảng tĩnh trong mảng hai chiều không?

cho mình hỏi có cách nào tăng được kích thước mảng tĩnh trong mảng hai chiều không ạ c++
giải thích giúp mình tác dụng của cái này

#define POW232 4294967296 + 1

Không, tạo mảng mới rồi copy qua thôi.
4294967296 + 1 tương đương với 2^32.
Cpu đời cũ sử dụng kiến trúc 32 bit. Dùng 32 bit để định địa chỉ. Vùng địa chỉ có thể quản lý được xấp xỉ 4,3 tỷ byte.
Bây giờ cpu 64 bit rồi.

4 Likes

cụ thể cách làm được ko ko hỉu cho lắm

Bạn trên nói đúng rồi. Bạn ý đang trả lời cho 2 câu hỏi của bạn.
Cụ thể:
Câu 1: có cách nào tăng được kích thước mảng tĩnh trong mảng hai chiều không ạ

Không, tạo mảng mới rồi copy qua thôi.

Diễn giải đầy đủ: Bạn không thể tăng hay giảm kích thước của mảng được. Nếu muốn thay đổi thì bạn cần phải tạo 1 mảng mới với kích thước mong muốn, copy từng phần tử ở mảng cũ sang mảng mới tạo.

Câu 2: giải thích giúp mình tác dụng của cái này #define POW232 4294967296 + 1

4294967296 + 1 tương đương với 2^32. Cpu đời cũ sử dụng kiến trúc 32 bit. Dùng 32 bit để định địa chỉ. Vùng địa chỉ có thể quản lý được xấp xỉ 4,3 tỷ byte.

Diễn giải đầy đủ: Đoạn code trên có vẻ đang cố khai báo 1 số int tối đa mà mà máy tính có thể có. Do ở cách OS 32bit thì kiểu int chỉ dùng 4byte do đó sẽ có tối đa 2^32 + 1 giá trị khác nhau (đếm từ 0 thì sẽ là 2^32, nhưng nếu đếm từ 1 thì phải cộng thêm 1)

PS: nếu bạn thấy hữu ích thì hãy đánh flag solution ở câu trả lời của bạn @linhnguyen vì bạn ý trả lời đúng rồi, mình chỉ giải thích lại ý của bạn ấy thôi

5 Likes

ý của mình là mảng có một giới hạn nhất định mình muốn vượt qua giới hạn đó của mảng để có thêm nhìu phần tử hơn có được ko khai báo ngay từ đầu luôn (nhưng phải là mảng động cho ví dụ cả 1 chìu và hai chìu) {xin cảm ơn}

Nhiều khả năng là lỗi vì bị tràn số rồi. Hằng số nguyên luôn là intint thường có 32 bit.

C++ thì lấy max min kiểu như sau: https://en.cppreference.com/w/cpp/types/numeric_limits

3 Likes

Câu trả lời là vector.

4 Likes

Mình thật kém cỏi. Tìm trên mạng thì có cách.
Đó là dùng hàm realloc
Đầu vào là pointer của vùng nhớ cũ và size vùng nhớ mới cần dùng.
Cái này liên quan nhiều đến hệ điều hành. Trình độ mình còn sơ sơ rồi nói bừa.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?