Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

데이터 구조의 이기종 어레이


알다시피 배열은 정의상 동질적입니다. 따라서 같은 유형의 데이터를 배열에 넣어야 합니다. 그러나 다른 유형의 데이터를 저장하려는 경우 트릭은 무엇입니까? 오래된 언어와 같은 C에서는 공용체를 사용하여 다른 유형을 하나의 유형으로 인위적으로 합칠 수 있습니다. 그런 다음 이 새로운 유형에 대한 배열을 정의할 수 있습니다. 여기서 배열 요소가 실제로 포함하는 객체의 종류는 태그에 의해 결정됩니다. 다음과 같은 구조를 봅시다 -

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

그런 다음 프로그래머는 id 태그가 사용되는 방식에 대한 규칙을 설정해야 합니다. 예를 들어 id가 0일 때 표현되는 Vehicle이 실제로는 Bus 등이라는 것을 의미한다고 가정하자. Union은 Bus, Bike, Car 중 가장 큰 타입에 대한 메모리를 할당한다. 개체의 크기에 큰 차이가 있는 경우 메모리 낭비입니다.

객체 지향 언어에서는 상속 개념을 사용할 수 있습니다. Vehicle이라는 클래스가 있고 Bus, Bike, Car와 같은 다른 모든 유형이 이 클래스의 하위 클래스라고 가정합니다. 따라서 Vehicle에 대한 배열을 정의하면 모든 하위 클래스도 포함할 수 있습니다. 이렇게 하면 단일 배열에 여러 유형의 데이터를 저장하는 데 도움이 됩니다.