配列の比較

生成

C++
int p[ 10 ];
または
int* p = new int[10];
要素数を変数とする場合
C++/CLI unmanaged
managed arrayクラス
array< int >^ p = gcnew array< int >( 10 );
C# 配列型 (Arrayクラス)
int[] p = new int[ 10 ];
Java
int[] p = new int[ 10 ];
int p[] = new int[ 10 ];
※[]は変数名の後でも可
Array.newInstance()メソッド
int[] p = (int[])Array.newInstance(int.class, 10 );

初期化

C++
int p[] = { 1, 2, 3 };
C++/CLI unmanaged
int p[] = { 1, 2, 3 };
managed
array<int>^ p = gcnew array< int > { 1, 2, 3 };
array<int>^ p = { 1, 2, 3 };
(代替の構文)
C#
int[] p = new int[] { 1, 2, 3 };
int[] p = { 1, 2, 3 };
(代替の構文)
Java
int[] p = new int[] { 1, 2, 3 };
int[] p = { 1, 2, 3 };

多次元配列

生成

C++
int p[ 2 ][ 3 ][ 4 ];
C++/CLI 矩形配列
array< int, 3 >^ p = gcnew array< int, 3 >( 2, 3, 4 );
ジャグ配列※1
array< array< array< int >^ >^ >^ p
  = gcnew array< array< array< int >^ >^ >( 2 );

for( int i = 0; i < 2; i++ )
{
  p[ i ] = gcnew array< array< int >^ >( 3 );

  for( int k = 0; k < 3; k++ )
  {
    p[ i ][ k ] = gcnew array< int >( 4 );
  }
}
C# 矩形配列
int[ ,, ] p = new int[ 2, 3, 4 ];
ジャグ配列※1
int[][][] p = new int[ 2 ][][];

for( int i = 0; i < 2; i++ )
{
  p[ i ] = new int[ 3 ][];

  for( int k = 0; k < 3; k++ )
  {
    p[ i ][ k ] = new int[ 4 ];
  }
}
Java
int[][][] p = new int[ 2 ][ 3 ][ 4 ];
※1 配列の配列として作成することで、C++の配列の形式でアクセスできます。

多次元配列へのアクセス

C++
p[ 1 ][ 2 ][ 3 ] = 256;
C++/CLI ※1
p[ 1, 2, 3 ] = 256;
C# ※1
p[ 1, 2, 3 ] = 256;
※1 これは矩形配列の場合。ジャグ配列 (jagged array) ならばC++と同様です。

配列の要素数の取得

  1次元配列の要素数 2次元配列の1次元目の要素数
C++
sizeof( p ) / sizeof( *p );
sizeof( *p ) / sizeof( **p );
C# Lengthプロパティ
p.Length;
p.GetLength( 0 );
GetLength()メソッド
p.GetLength( 0 );
Java lengthフィールド
p.length;
p[ 0 ].length;
Array.getLength()メソッド
Array.getLength( p );

ループ

言語によって、

  • for_each
  • for each
  • foreach

と、記述が微妙に異なります。

C++ for_each()アルゴリズム ※STLを使用した場合
for_each( 最初の反復子, 最後の反復子, 関数 )
C++/CLI for eachステートメント
for each( 型 変数 in 配列 )
C# foreachステートメント
foreach( 型 変数 in 配列 )
Java 拡張for文
for( 型 変数 : 配列 )