Mảng đa chiều C ++ (mảng thứ 2 và 3 chiều)

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về mảng đa chiều trong C ++. Cụ thể hơn là cách khai báo, truy cập và sử dụng chúng hiệu quả trong chương trình của chúng tôi.

Trong C ++, chúng ta có thể tạo một mảng của mảng, được gọi là mảng nhiều chiều. Ví dụ:

 int x(3)(4);

Ở đây, x là một mảng hai chiều. Nó có thể chứa tối đa 12 phần tử.

Chúng ta có thể coi mảng này như một bảng có 3 hàng và mỗi hàng có 4 cột như hình dưới đây.

Các phần tử trong mảng hai chiều trong lập trình C ++

Mảng ba chiều cũng hoạt động theo cách tương tự. Ví dụ:

 float x(2)(4)(3);

Mảng x này có thể chứa tối đa 24 phần tử.

Chúng ta có thể tìm ra tổng số phần tử trong mảng đơn giản bằng cách nhân các kích thước của nó:

 2 x 4 x 3 = 24

Khởi tạo mảng đa chiều

Giống như một mảng bình thường, chúng ta có thể khởi tạo một mảng nhiều chiều theo nhiều cách.

1. Khởi tạo mảng hai chiều

 int test(2)(3) = (2, 4, 5, 9, 0, 19);

Phương pháp trên không được ưu tiên. Dưới đây là một cách tốt hơn để khởi tạo mảng này với các phần tử giống nhau của mảng:

 int test(2)(3) = ( (2, 4, 5), (9, 0, 19));

Mảng này có 2 hàng và 3 cột, đó là lý do tại sao chúng ta có hai hàng phần tử với 3 phần tử mỗi hàng.

Khởi tạo mảng hai chiều trong C ++

2. Khởi tạo mảng ba chiều

 int test(2)(3)(4) = (3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23, 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9);

Đây không phải là một cách tốt để khởi tạo một mảng ba chiều. Một cách tốt hơn để khởi tạo mảng này là:

 int test(2)(3)(4) = ( ( (3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2) ), ( (13, 4, 56, 3), (5, 9, 3, 5), (5, 1, 4, 9) ) );

Lưu ý các kích thước của mảng ba chiều này.

Kích thước đầu tiên có giá trị 2. Vì vậy, hai phần tử bao gồm thứ nguyên đầu tiên là:

 Phần tử 1 = ((3, 4, 2, 3), (0, -3, 9, 11), (23, 12, 23, 2)) Phần tử 2 = ((13, 4, 56, 3), ( 5, 9, 3, 5), (5, 1, 4, 9)) 

Chiều thứ hai có giá trị 3. Lưu ý rằng mỗi phần tử của kích thước đầu tiên có ba phần tử, mỗi phần tử:

 (3, 4, 2, 3), (0, -3, 9, 11) và (23, 12, 23, 2) cho Phần tử 1. (13, 4, 56, 3), (5, 9, 3 , 5) và (5, 1, 4, 9) cho Phần tử 2.

Cuối cùng, có bốn intsố bên trong mỗi phần tử của chiều thứ hai:

 (3, 4, 2, 3) (0, -3, 9, 11)…… 

Ví dụ 1: Mảng hai chiều

 // C++ Program to display all elements // of an initialised two dimensional array #include using namespace std; int main() ( int test(3)(2) = ((2, -5), (4, 0), (9, 1)); // use of nested for loop // access rows of the array for (int i = 0; i < 3; ++i) ( // access columns of the array for (int j = 0; j < 2; ++j) ( cout << "test(" << i << ")(" << j << ") = " << test(i)(j) << endl; ) ) return 0; )

Đầu ra

 test (0) (0) = 2 test (0) (1) = -5 test (1) (0) = 4 test (1) (1) = 0 test (2) (0) = 9 test (2) (1) = 1

Trong ví dụ trên, chúng ta đã khởi tạo một intmảng hai chiều có tên test có 3 "hàng" và 2 "cột".

Ở đây, chúng ta đã sử dụng forvòng lặp lồng nhau để hiển thị các phần tử của mảng.

  • vòng lặp bên ngoài i == 0để i == 2truy cập các hàng của mảng
  • vòng lặp bên trong j == 0để j == 1truy cập các cột của mảng

Cuối cùng, chúng tôi in các phần tử mảng trong mỗi lần lặp.

Ví dụ 2: Lấy đầu vào cho mảng hai chiều

 #include using namespace std; int main() ( int numbers(2)(3); cout << "Enter 6 numbers: " << endl; // Storing user input in the array for (int i = 0; i < 2; ++i) ( for (int j = 0; j > numbers(i)(j); ) ) cout << "The numbers are: " << endl; // Printing array elements for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( cout << "numbers(" << i << ")(" << j << "): " << numbers(i)(j) << endl; ) ) return 0; )

Đầu ra

 Nhập 6 số: 1 2 3 4 5 6 Các số đó là: số (0) (0): 1 số (0) (1): 2 số (0) (2): 3 số (1) (0): 4 số (1) (1): 5 số (1) (2): 6

Ở đây, chúng tôi đã sử dụng một forvòng lặp lồng nhau để lấy đầu vào của mảng 2d. Khi tất cả đầu vào đã được thực hiện, chúng tôi đã sử dụng một forvòng lặp lồng nhau khác để in các thành viên của mảng.

Ví dụ 3: Mảng ba chiều

 // C++ Program to Store value entered by user in // three dimensional array and display it. #include using namespace std; int main() ( // This array can store upto 12 elements (2x3x2) int test(2)(3)(2) = ( ( (1, 2), (3, 4), (5, 6) ), ( (7, 8), (9, 10), (11, 12) ) ); // Displaying the values with proper index. for (int i = 0; i < 2; ++i) ( for (int j = 0; j < 3; ++j) ( for (int k = 0; k < 2; ++k) ( cout << "test(" << i << ")(" << j << ")(" << k << ") = " << test(i)(j)(k) << endl; ) ) ) return 0; )

Đầu ra

 test (0) (0) (0) = 1 test (0) (0) (1) = 2 test (0) (1) (0) = 3 test (0) (1) (1) = 4 test ( 0) (2) (0) = 5 thử nghiệm (0) (2) (1) = 6 thử nghiệm (1) (0) (0) = 7 thử nghiệm (1) (0) (1) = 8 thử nghiệm (1) (1) (0) = 9 kiểm tra (1) (1) (1) = 10 kiểm tra (1) (2) (0) = 11 kiểm tra (1) (2) (1) = 12

Khái niệm cơ bản về việc in các phần tử của mảng 3d tương tự như của mảng 2d.

Tuy nhiên, vì chúng tôi đang thao tác 3 thứ nguyên, chúng tôi sử dụng vòng lặp for lồng nhau với tổng số 3 vòng thay vì chỉ 2:

  • vòng lặp ngoài từ i == 0để i == 1truy cập kích thước đầu tiên của mảng
  • vòng lặp giữa từ j == 0để j == 2truy cập chiều thứ hai của mảng
  • vòng lặp trong cùng k == 0để k == 1truy cập chiều thứ ba của mảng

Như chúng ta có thể thấy, độ phức tạp của mảng tăng lên theo cấp số nhân với sự gia tăng kích thước.

thú vị bài viết...