Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Mảng không đồng nhất trong cấu trúc dữ liệu


Như biết, mảng theo định nghĩa là đồng nhất (homogeneous). Ta phải đưa dữ liệu cùng kiểu vào mảng. Nhưng nếu muốn lưu dữ liệu các kiểu khác nhau, thủ thuật là gì? Trong C, ta dùng union để gộp các kiểu thành một kiểu mới, sau đó định nghĩa mảng trên kiểu đó. Loại đối tượng thực sự mà phần tử mảng chứa được xác định bởi một tag. Xem cấu trúc sau:

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

Lập trình viên phải quy ước cách dùng tag id. Ví dụ: id = 0 nghĩa là xe Bus, v.v. Union cấp phát bộ nhớ cho kiểu lớn nhất trong Bus, Bike, Car. Điều này lãng phí bộ nhớ nếu kích thước các đối tượng chênh lệch lớn.

Trong ngôn ngữ hướng đối tượng, ta dùng kế thừa. Giả sử có lớp Vehicle, các lớp Bus, Bike, Car là lớp con. Nếu định nghĩa mảng cho Vehicle, nó cũng chứa được tất cả các lớp con. Điều này giúp lưu nhiều kiểu dữ liệu trong một mảng.