プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

データ構造内の異種配列


私たちが知っているように、配列は定義上同種です。したがって、同じタイプのデータを配列に配置する必要があります。しかし、異なるタイプのデータを保存したい場合、トリックは何でしょうか?古い言語のようなCでは、ユニオンを使用して、さまざまなタイプを1つのタイプに人為的に合体させることができます。次に、この新しいタイプで配列を定義できます。ここで、配列要素に実際に含まれるオブジェクトの種類は、タグによって決定されます。このような1つの構造を見てみましょう-

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

次に、プログラマーはidタグの使用方法に関する規則を確立する必要があります。たとえば、idが0の場合、表される車両が実際にはバスなどであることを意味するとします。ユニオンは、バス、自転車、車の中で最大のタイプにメモリを割り当てます。オブジェクトのサイズに大きな違いがある場合、これはメモリにとって無駄になります。

オブジェクト指向言語では、継承の概念を使用できます。 Vehicleというクラスがあり、Bus、Bike、Carなどの他のすべてのタイプがそのサブクラスであるとします。したがって、Vehicleの配列を定義すると、そのすべてのサブクラスも保持できます。これにより、複数の種類のデータを1つの配列に保存できます。


  1. データ構造内の不規則な配列

    ここに不規則な配列が表示されます。不規則な配列について説明する前に、規則的な配列とは何かを知る必要があります。通常の配列はそのような配列であり、各行の列数は同じです。つまり、各行が同じ数の要素を保持している場合、それは通常の配列です。次の表現は通常の配列です。 規則的な配列の定義から、不規則な配列とは何かを理解できます。したがって、不規則な配列では、各行に同じ数の要素が含まれる場合と含まれない場合があります。この種の不規則な配列は、配列の配列表現で表すこともできます。これは以下のようになります-

  2. データ構造体での配列表現の配列

    このセクションでは、多次元配列の別の表現を示します。ここでは、配列の配列表現が表示されます。この形式では、複数の配列の開始アドレスを保持している配列があります。表現は次のようになります。 これは、サイズ[7x8]の2次元配列xです。各行は、単一の1次元配列として表されます。初期配列は、これらの単一配列のアドレスを保持しています。これらはアドレスの配列であるため、ポインタの配列であると言えます。各ポインタは別の配列のアドレスを保持しています。 この種の配列を作成すると、以下のような新しいキーワードを使用できます- int [][] x = new int[7][8]; 位置x[i、j