Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa mảng một chiều (1D) và hai chiều (2D)

Mảng là một tập hợp các biến có kiểu dữ liệu tương tự và được gọi bằng một tên chung. Một phần tử cụ thể trong một mảng được truy cập bởi một chỉ mục cụ thể của mảng đó. Mảng trong Java hoạt động khác so với C ++. Chủ đề chính của cuộc thảo luận của chúng tôi là sự khác biệt giữa mảng Một chiều và Hai chiều. Mảng một chiều là danh sách các biến có cùng kiểu dữ liệu, trong khi mảng hai chiều là 'mảng mảng' có kiểu dữ liệu tương tự nhau. C ++ không có kiểm tra ràng buộc trên các mảng trong khi đó, Java có kiểm tra ràng buộc chặt chẽ trên các mảng.

Vì vậy, hãy bắt đầu với sự khác biệt giữa mảng Một chiều và Hai chiều cùng với biểu đồ so sánh.

Biểu đồ so sánh:

Cơ sở để so sánhMột chiềuHai chiều
Căn bản
Lưu trữ danh sách các yếu tố của loại dữ liệu tương tự.Lưu trữ 'danh sách các danh sách' hoặc 'mảng của mảng' hoặc 'mảng của mảng một chiều'.
Tờ khai/ * khai báo trong C ++
gõ biến_name [kích thước]; * /
/ * khai báo bằng Java
gõ biến_name [];
biến_name = loại mới [kích thước]; * /
/ * khai báo trong C ++
gõ biến_name [size1] [size2]; * /
/ * khai báo bằng Java
gõ biến_name = new int [size1] [size2]; * /
Tuyên bố thay thế/ * Trong Java
int [] a = new int [10]; * /
/ * Trong Java
int [] [] a = new int [10] [20]; * /
Tổng kích thước tính bằng byteTổng số byte = sizeof (kiểu dữ liệu của biến mảng) * kích thước của mảng.Tổng số byte = sizeof (kiểu dữ liệu của biến mảng) * kích thước của chỉ mục thứ nhất * kích thước của chỉ mục thứ hai.
Nhận thông sốNó có thể được nhận trong một con trỏ, mảng có kích thước hoặc một mảng chưa được thống nhất.Tham số nhận nó phải xác định kích thước ngoài cùng bên phải của một mảng.
Kích thướcMột chiều.Hai chiều.

Định nghĩa Mảng một chiều (mảng 1 chiều)

Mảng một chiều hoặc một chiều được coi là danh sách các biến của các kiểu dữ liệu tương tự, và mỗi biến có thể được truy cập riêng biệt bằng cách chỉ định chỉ mục của nó trong dấu ngoặc vuông đứng trước tên của mảng đó.

Trong C ++, khai báo một biến mảng có kích thước là đủ để phân bổ không gian cho chúng trong bộ nhớ. Trong Java, điều này đạt được theo hai bước. Đầu tiên, bạn phải khai báo một biến của loại mong muốn. Thứ hai, bạn phải phân bổ bộ nhớ để giữ mảng bằng cách sử dụng 'new' và gán nó cho biến mảng được khai báo. Do đó, các mảng được phân bổ động trong Java.

Hãy thảo luận về bối cảnh C ++

 // khai báo trong kiểu C ++ biến_name [size]; 

Ở đây kiểu khai báo kiểu dữ liệu của biến mảng và kích thước xác định số lượng phần tử mà mảng sẽ giữ.

Ví dụ: nếu chúng ta muốn khai báo một mảng sẽ chứa số dư của mỗi tháng trong năm.

 // ví dụ int tháng_balance [12]; 

Tháng _balance là biến mảng sẽ chứa 12 số nguyên, sẽ đại diện cho số dư của mỗi tháng. Bây giờ, nếu chúng ta muốn truy cập số dư của tháng 'tháng 4, chúng ta chỉ cần đề cập đến tên biến theo dấu ngoặc vuông chứa giá trị chỉ mục cho tháng 4, tức là' tháng_balance [3] '. Nhưng vì 'Tháng Tư' là tháng thứ tư trong năm nhưng chúng tôi đã đề cập '[3]' vì tất cả các mảng có 0 là chỉ số của phần tử đầu tiên của chúng.

Trong Java, điều này có thể được thực hiện như là

 // khai báo trong kiểu Java biến_name []; biến_name = loại mới [kích thước]; 

Ở đây, ban đầu chúng tôi đã khai báo một biến mảng với kiểu của nó và sau đó chúng tôi đã phân bổ bộ nhớ cho nó bằng cách sử dụng 'new' và gán 'new' cho biến mảng được khai báo. Hãy lấy ví dụ trên nếu chúng ta muốn khai báo một mảng sẽ chứa số dư trong mỗi tháng trong năm.

 // ví dụ int tháng_balance []; tháng_balance = new int [12]; 

Ở đây, 'mới' phân bổ bộ nhớ cho biến mảng tháng tháng_balance, vì vậy bây giờ, mont_balance sẽ giữ bộ nhớ cho 12 giá trị nguyên.

Mảng có thể được khởi tạo khi chúng được khai báo. Bộ khởi tạo mảng là danh sách các giá trị được phân tách bằng dấu phẩy được bao quanh bởi dấu ngoặc nhọn.
//thí dụ

 int tháng_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450.180}; 

Định nghĩa Mảng hai chiều (mảng 2 chiều)

Cả C ++ và Java đều hỗ trợ mảng đa chiều. Một trong những hình thức đơn giản nhất của mảng nhiều chiều là mảng hai chiều hoặc mảng 2 chiều. Mảng hai chiều có thể được coi là 'mảng của mảng' hoặc 'mảng của mảng một chiều'. Để khai báo biến mảng hai chiều, chúng ta phải chỉ định tên mảng theo sau là hai dấu ngoặc vuông trong đó chỉ mục thứ hai là tập hợp dấu ngoặc vuông thứ hai.

Mảng hai chiều được lưu trữ dưới dạng ma trận cột hàng, trong đó chỉ mục đầu tiên chỉ ra hàng và chỉ mục thứ hai chỉ ra cột. Chỉ mục thứ hai hoặc ngoài cùng bên phải của một mảng thay đổi rất nhanh so với chỉ mục đầu tiên hoặc bên trái nhất trong khi truy cập các phần tử của một mảng.

Trong C ++, mảng hai chiều được khai báo là;

 // khai báo trong kiểu C ++ biến_name [size1] [size2]; 

Ví dụ: chúng tôi muốn lưu trữ số dư của mỗi 30 ngày trong mỗi tháng trong năm, trong một mảng 2 chiều.

 // ví dụ int tháng_balance [12] [30]; 

Trong Java, mảng hai chiều có được bởi

 // khai báo trong kiểu Java biến_name = new int [size1] [size2]; // ví dụ int tháng_balance = new int [12] [30]; 

Vì chúng ta không thể truyền toàn bộ mảng dưới dạng tham số cho hàm, một con trỏ tới phần tử đầu tiên của mảng được truyền. Một đối số nhận được mảng hai chiều phải xác định đó là chiều phải nhất. Kích thước ngoài cùng bên phải là bắt buộc vì trình biên dịch cần nó, để xác nhận độ dài của mỗi hàng nếu nó muốn lập chỉ mục cho mảng chính xác. Nếu chỉ mục bên phải nhất không được đề cập, trình biên dịch không thể xác định nơi hàng tiếp theo bắt đầu.

 // ví dụ trong Java void receiveing_func (int a [] [10]) {. . . } 

Khi bộ nhớ được phân bổ động cho mảng hai chiều trong Java, chỉ mục ngoài cùng bên trái được chỉ định và các kích thước còn lại có thể được phân bổ riêng, tức là tất cả các hàng của mảng có thể không có cùng kích thước.

 // ví dụ trong Java int tháng_balance = new int [12] []; tháng_balance [0] = new int [31]; tháng_balance [1] = new int [28]; tháng_balance [2] = new int [31]; tháng_balance [3] = new int [30]; tháng_balance [4] = new int [31]; tháng_balance [5] = new int [30]; tháng_balance [6] = new int [31]; tháng_balance [7] = new int [30]; tháng_balance [8] = new int [31]; tháng_balance [9] = new int [30]; tháng_balance [10] = new int [31]; tháng_balance [11] = new int [30]; tháng_balance [12] = new int [31]; 

Nhưng không có lợi thế để làm như vậy.

Sự khác biệt chính giữa mảng một chiều và hai chiều

  1. Mảng một chiều là một danh sách có các phần tử của kiểu dữ liệu tương tự. Mặt khác, mảng hai chiều là một danh sách có các phần tử là mảng có kiểu dữ liệu tương tự.
  2. Trong C ++, khi mảng một chiều được nhận bởi tham số của hàm nhận, không cần đề cập đến kích thước của mảng như, trình biên dịch hiểu rằng mảng của kiểu (kiểu dữ liệu được đề cập cùng với tham số) có độ dài sẽ được nhận. Trong một mảng hai chiều, chỉ mục thứ hai hoặc bên phải nhất sẽ được chỉ định là trình biên dịch cần biết nơi một hàng kết thúc và một hàng mới bắt đầu.
  3. Trong C ++, mảng một chiều được lưu trữ ở vị trí bộ nhớ liền kề theo thứ tự được lập chỉ mục, trong khi đó mảng hai chiều cũng được lưu trữ ở vị trí bộ nhớ liền kề, nhưng có nhiều hàng trong một mảng hai chiều, lưu trữ của một hàng đầu tiên được theo sau bởi một thứ hai và thứ ba và như vậy.

Chú thích:

Truyền cả hai, mảng một chiều cũng như, mảng hai chiều cho một hàm là tương tự nhau, tức là cả hai chỉ được truyền bằng tên của mảng

 // ví dụ chuyền_funt (name_of_array); 

Phần kết luận:

Trong cả mảng một chiều và hai chiều, chỉ mục đóng vai trò rất quan trọng vì đó là điều duy nhất xác định cụ thể một phần tử trong mảng. Cả mảng một chiều và hai chiều có thể được khởi tạo tại thời điểm khai báo.

Top