Share via


配列 (C++ コンポーネント拡張)

Platform::Array<T> は C++/CXを入力するか、C++/CLIの array のキーワードは、指定した型と初期値の配列を宣言します。

すべてのプラットフォーム

配列が前回の山かっこの後に (>) 使用する宣言でハンドルにオブジェクト (^) 修飾子を宣言する必要があります。

配列の要素の数は、型の一部ではありません。1種類の配列変数とは異なるサイズの配列を示すことができます。

標準C++とは異なり、添字演算子は、ポインター演算のシノニムではなく、可換性ではありません。

配列に関する詳細については、" "を参照してください:

Windows ランタイム

配列は Platform の名前空間のメンバーです。配列は、1次元です。

構文

構文の最初の例は、配列を代入するに ref new の集計のキーワードを使用します。2番目の例は、ローカル配列を宣言します。

[qualifiers] [Platform::]Array<[qualifiers] array-type [,rank]>^ identifier = ref new [Platform::]Array< initialization-type > [{initialization-list [,...]}]

[qualifiers] [Platform::]Array<[qualifiers] array-type [,rank]>^ identifier = {initialization-list [,...]}
  • 修飾子 [省略可能]
    これらのストレージ クラスの指定子を一つ以上: 変更[volatile][const]extern静的

  • array-type
    配列変数の型。有効な型は Windows ランタイム のクラスおよび基本型、refクラスおよび構造体、値のクラスおよび構造体とネイティブ ポインター (type*) です。

  • rank [省略可能]
    配列の次元の数。1 にする必要があります。

  • identifier
    配列変数の名前。

  • initialization-type
    配列を初期化する値の型。通常、array-type と initialization-type が同じ型です。ただし、型は— initialization-type がから派生している場合 array-type例の array-type… initialization-type からへの変換がある場合は異なります。

  • initialization-list [省略可能]
    配列の要素を初期化する、角かっこの値のコンマ区切りのリスト。たとえば、rank-size-list が (3)、3個の要素を持つ1次元配列の宣言、initialization list は {1,2,3}になる可能性があります。

解説

型が __is_ref_array(type)の参照カウントが設定された配列であるかどうか、コンパイル時に検出できます。詳細については、「型の特徴のコンパイラ サポート (C++ コンポーネント拡張)」を参照してください。

ts4c4dw6.collapse_all(ja-jp,VS.110).gif要件

コンパイラ オプション: /ZW

ts4c4dw6.collapse_all(ja-jp,VS.110).gif

次の例では、100種類の要素を持つ1次元配列を作成します。

// cwr_array.cpp
// compile with: /ZW
using namespace Platform;
ref class MyClass {};
int main() {
   // one-dimensional array
   Array<MyClass^>^ My1DArray = ref new Array<MyClass^>(100);
   My1DArray[99] = ref new MyClass();
}

共通言語ランタイム

構文

構文の最初の例は、配列を代入するに gcnew のキーワードを使用します。2番目の例は、ローカル配列を宣言します。

[qualifiers] [cli::]array<[qualifiers] array-type [,rank] >^ identifier = gcnew [cli::]array< initialization-type [,rank] >(rank-size-list[,...]) [{initialization-list [,...]}]

[qualifiers] [cli::]array<[qualifiers] array-type [,rank] >^ identifier = {initialization-list [,...]}
  • 修飾子 [省略可能]
    これらのストレージ クラスの指定子を一つ以上: 変更[volatile][const]extern静的

  • array-type
    配列変数の型。有効な型は Windows ランタイム のクラスおよび基本型、refクラスおよび構造体、値のクラスおよび構造体、ネイティブ ポインター (type*)、およびPODネイティブ (plain old data) の型です。

  • rank [省略可能]
    配列の次元の数。既定値は1です。; 最大値は32です。配列の各次元自体は配列です。

  • identifier
    配列変数の名前。

  • initialization-type
    配列を初期化する値の型。通常、array-type と initialization-type が同じ型です。ただし、型は— initialization-type がから派生している場合 array-type例の array-type… initialization-type からへの変換がある場合は異なります。

  • rank-size-list
    配列の各次元のサイズのコンマ区切りのリスト。また initialization-list のパラメーターを指定した場合、コンパイラは、各次元のサイズを推論 rank-size-list、は省略できます。詳細については、「方法: Multidimension の配列を作成します。」を参照してください。

  • initialization-list [省略可能]
    配列の要素を初期化する、角かっこの値のコンマ区切りのリスト。または多次元配列の要素を初期化する [initialization-list] の入れ子になった項目のコンマ区切りのリスト。

    たとえば、rank-size-list が (3)、3個の要素を持つ1次元配列の宣言、initialization list は {1,2,3}になる可能性があります。rank-size-list が (3,2,4)、最初の次元の要素は3個の次元配列を宣言する、の要素は2個目、および2番目の要素は4個 initialization-list は、{{1,2,3},{0,0},{-5,10,-21,99}}になる可能性があります)。

解説

array は プラットフォーム、既定、および cli 名前空間 (C++ コンポーネント拡張) の名前空間にあります。

標準C++のように、配列のインデックスは、ベースであり、配列は角かっこを使用してsubscripted ([])。標準C++とは異なり、多次元配列のインデックスは、一連の四角形の角かっこ ([]) 演算子ではなく各次元のインデックスのリストに各次元に対して指定します。たとえば、識別子["] の代わりに 識別子["、array] [array]。

すべてのマネージ配列は System::Arrayから継承します。System::Array のメソッドやプロパティは、配列変数に直接適用できます。

要素の型がマネージ クラス ポインターである配列を代入すると、要素0は初期化されます。

要素型は値型 Vである配列を代入すると、V の既定のコンストラクターは、各配列要素に適用されます。詳細については、「C++ ネイティブ型と等価な .NET Framework ネイティブ型 (C++/CLI)」を参照してください。

コンパイル時に、型が __is_ref_array(type)の共通言語ランタイムの(CLR)の配列であるかどうかを検出できます。詳細については、「型の特徴のコンパイラ サポート (C++ コンポーネント拡張)」を参照してください。

ts4c4dw6.collapse_all(ja-jp,VS.110).gif要件

コンパイラ オプション: /clr

ts4c4dw6.collapse_all(ja-jp,VS.110).gif

次の例では、三つの要素を持つ100、最初の次元で三つの要素を持つ3次元配列を、の要素は5個、2番目と6番目の三つの要素を持つ1次元配列を作成します。

// clr_array.cpp
// compile with: /clr
ref class MyClass {};
int main() {
   // one-dimensional array
   array<MyClass ^> ^ My1DArray = gcnew array<MyClass ^>(100);
   My1DArray[99] = gcnew MyClass();

   // three-dimensional array
   array<MyClass ^, 3> ^ My3DArray = gcnew array<MyClass ^, 3>(3, 5, 6);
   My3DArray[0,0,0] = gcnew MyClass();
}

参照

概念

ランタイム プラットフォームのコンポーネントの拡張機能