web-dev-qa-db-ja.com

ギザギザの配列とは何ですか?

ジャグ配列とは何ですか(C#)?どんな例といつそれを使うべきか...

44
ACP

ギザギザの配列は、配列の配列です。

string[][] arrays = new string[5][];

これは5つの異なる文字列配列のコレクションであり、それぞれ異なる長さになる可能性があります(同じ長さにすることもできますが、要点は保証であるということです)。

arrays[0] = new string[5];
arrays[1] = new string[100];
...

これは、長方形の2D配列とは異なります。つまり、各行の列数は同じです。

string[,] array = new string[3,5];
55
Anthony Pegram

ギザギザの配列はどの言語でも同じですが、2番目以降の配列で異なる配列の長さを持つ2次元配列があります。

[0] - 0, 1, 2, 3, 4
[1] - 1, 2, 3
[2] - 5, 6, 7, 8, 9, 10
[3] - 1
[4] - 
[5] - 23, 4, 7, 8, 9, 12, 15, 14, 17, 18
10
Tarka

最良の答えは質問の所有者によって選択されますが、それでもジャグ配列をより明確にするために次のコードを提示したいと思います。

using System;

class Program
{
static void Main()
 {
 // Declare local jagged array with 3 rows.
 int[][] jagged = new int[3][];

 // Create a new array in the jagged array, and assign it.
 jagged[0] = new int[2];
 jagged[0][0] = 1;
 jagged[0][1] = 2;

 // Set second row, initialized to zero.
 jagged[1] = new int[1];

 // Set third row, using array initializer.
 jagged[2] = new int[3] { 3, 4, 5 };

 // Print out all elements in the jagged array.
 for (int i = 0; i < jagged.Length; i++)
  {
    int[] innerArray = jagged[i];
    for (int a = 0; a < innerArray.Length; a++)
    {
    Console.Write(innerArray[a] + " ");
    }
    Console.WriteLine();
  }
 }
}

出力は

1 2

0

3 4 5

ジャグ配列は、さまざまな長さの行にデータを格納するために使用されます。

詳細については、 MSDNブログのこの投稿 を確認してください。

6
Aayushi Jain

詳細については、こちらをご覧ください: http://msdn.Microsoft.com/en-us/library/2s05feca.aspx

また:

ギザギザの配列は、要素が配列である配列です。ギザギザの配列の要素は、異なる次元とサイズにすることができます。ギザギザの配列は、「配列の配列」と呼ばれることもあります。次の例は、ジャグ配列を宣言、初期化、およびアクセスする方法を示しています。

以下は、それぞれが整数の1次元配列である3つの要素を持つ1次元配列の宣言です。

jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];

または

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };
5
Tarik

ギザギザの配列は、宣言中に行数を宣言するものですが、実行中またはユーザーの選択によって列数を宣言します。その場合、各JAGGED配列に異なる数の列が必要な場合の意味です

int[][] a = new int[6][];//its mean num of row is 6
        int choice;//thats i left on user choice that how many number of column in each row he wanna to declare

        for (int row = 0; row < a.Length; row++)
        {
           Console.WriteLine("pls enter number of colo in row {0}", row);
           choice = int.Parse(Console.ReadLine());
            a[row] = new int[choice];
            for (int col = 0; col < a[row].Length; col++)
            {
                a[row][col] = int.Parse(Console.ReadLine());
            }
        }
2
Adiii

ジャグ配列は、他の配列が含まれる配列です。

ギザギザの配列は、行数は固定されているが列数は固定されていない配列です。

ウィンドウフォームアプリケーションのC#のギザギザ配列のコード

int[][] a = new int[3][];

a[0]=new int[5];
a[1]=new int[3];
a[2]=new int[1];

int i;

for(i = 0; i < 5; i++)
{
    a[0][i] = i;
    ListBox1.Items.Add(a[0][i].ToString());
}

for(i = 0; i < 3; i++)
{
    a[0][i] = i;
    ListBox1.Items.Add(a[0][i].ToString());
}

for(i = 0; i < 1; i++)
{
    a[0][i] = i;
    ListBox1.Items.Add(a[0][i].ToString());
}

上記のプログラムでわかるように、行の数は3に固定されていませんが、列の数は固定されていません。したがって、5、3、1の3つの異なる列の値を使用しました。このコードで使用されるListBox1キーワードは、ボタンをクリックして結果を表示するためにウィンドウフォームで使用するリストボックス用です。ウィンドウ形式でも使用されます。ここで行われるプログラミングはすべてボタン上にあります。

0
Deepak Kumar