Computer >> Máy Tính >  >> Lập trình >> Lập trình

Mảng không đồng nhất trong Data Sturcture


Như chúng ta biết các mảng là đồng nhất theo định nghĩa. Vì vậy, chúng ta phải đặt dữ liệu cùng kiểu trong một mảng. Nhưng nếu chúng ta muốn lưu trữ dữ liệu kiểu khác, thì thủ thuật sẽ là gì? Trong C giống như các ngôn ngữ cũ, chúng ta có thể sử dụng liên kết để kết hợp giả tạo các loại khác nhau thành một loại. Sau đó, chúng ta có thể xác định một mảng trên kiểu mới này. Ở đây loại đối tượng mà một phần tử mảng thực sự chứa được xác định bởi một thẻ. Hãy để chúng tôi xem một cấu trúc như thế này -

struct Vehicle{
   int id;
   union {
      Bus b;
      Bike c;
      Car d;
   }
};

Sau đó, lập trình viên sẽ phải thiết lập một quy ước về cách thẻ id sẽ được sử dụng. Ví dụ, giả sử khi id là 0, điều đó có nghĩa là Phương tiện được đại diện thực sự là Xe buýt, v.v. Công đoàn phân bổ bộ nhớ cho loại lớn nhất trong số Xe buýt, Xe đạp và Ô tô. Điều này sẽ lãng phí bộ nhớ nếu có sự chênh lệch lớn giữa các kích thước của các đối tượng.

Trong các ngôn ngữ hướng đối tượng, chúng ta có thể sử dụng khái niệm thừa kế. Giả sử chúng ta có một lớp gọi là Xe, và tất cả các loại khác như Xe buýt, Xe đạp và Xe hơi là lớp con của nó. Vì vậy, nếu chúng ta xác định một mảng cho Xe, thì mảng đó cũng có thể chứa tất cả các lớp con của nó. Điều này sẽ giúp chúng tôi lưu trữ nhiều loại dữ liệu trong một mảng.