3D配列の正しい使い方を理解することができません。私はC#を使用しています。私の主な混乱は、どのインデックスがZインデックスであるかです。残念ながら、私は多くのグーグルを行っていますが、私が知る情報の大半は2D配列に関する情報でした。 YouTubeでこの男は、しかし、第3のインデックスはZであったことを言った:https://www.youtube.com/watch?v=Eqo552n1DSc3D配列内のZインデックスを指し示すインデックス
の場合とチュートリアルによれば:
public string[,,] array3DString = new string[2, 5, 6];
2 = X 5 = Y、および6 = Z。
最初はこれが理にかなっていましたが、視覚的に物事を見るのに役立ちます。外、私はループと3次元配列を反復処理しようとしたとき、最初のインデックスはZであるために、それが原因で、当然のことながら、より多くの意味を成していたように私には思えた
class Test
{
public string[,,] array3DString = new string[2, 5, 5];
public void SetArray3DString()
{
for (int zIndex = 0; zIndex < 2; zIndex++)
{
for (int r = 0; r < 5; r++)
{
for (int c = 0; c < 5; c++)
{
array3DString[zIndex, r, c] = "z" + zIndex + "r" + r + "c" + c;
}
}
}
}
public void PrintArray3DString()
{
for (int zIndex = 0; zIndex < 2; zIndex++)
{
Console.WriteLine("Z Index - " + zIndex);
for (int r = 0; r < 5; r++)
{
for (int c = 0; c < 5; c++)
{
if (c < 4)
{
Console.Write(array3DString[zIndex, c, r] + ",");
}
else
{
Console.WriteLine(array3DString[zIndex, c, r]);
}
}
}
}
}
}
class Program
{
static void Main(string[] args)
{
Test newTest = new Test();
newTest.SetArray3DString();
newTest.PrintArray3DString();
while (true);
}
}
:だから私はこの簡単なプログラムを書きましたループは索引付けされる最後のものです。出力は次のとおりです。
Z Index - 0
z0r0c0,z0r1c0,z0r2c0,z0r3c0,z0r4c0
z0r0c1,z0r1c1,z0r2c1,z0r3c1,z0r4c1
z0r0c2,z0r1c2,z0r2c2,z0r3c2,z0r4c2
z0r0c3,z0r1c3,z0r2c3,z0r3c3,z0r4c3
z0r0c4,z0r1c4,z0r2c4,z0r3c4,z0r4c4
Z Index - 1
z1r0c0,z1r1c0,z1r2c0,z1r3c0,z1r4c0
z1r0c1,z1r1c1,z1r2c1,z1r3c1,z1r4c1
z1r0c2,z1r1c2,z1r2c2,z1r3c2,z1r4c2
z1r0c3,z1r1c3,z1r2c3,z1r3c3,z1r4c3
z1r0c4,z1r1c4,z1r2c4,z1r3c4,z1r4c4
これは私が期待しているものです。最後のインデックスZを作ろうとしたとき、私はちょっと混乱しました。
私は正しいですか、またはYoutubeビデオの男の人ですか?どのインデックスをZにする必要がありますか?それは問題なの?
参考までに、私もこのサイトを試しました:https://www.tutorialspoint.com/csharp/csharp_multi_dimensional_arrays.htm しかし、彼らは主に2Dアレイに焦点を当てていて、この単純な質問に私は答えませんでした。
ご協力いただきありがとうございます。
だから、私はZインデックスと考えても問題ではないと言っていますか? – Simflare
そして、私はそれらを視覚的に正しく見えるように印刷しました。迅速な返信のための乾杯! – Simflare
個人的に私はこの目的のために多次元配列を避けるでしょう。むしろ1次元配列を使用したいと思います。私がオフセットを計算したいのであれば、((width * height)* z)+(width * y)+ x'しかし、私はリニアスキャンを行います。 –