Share via


Matrices (Extensiones de componentes de C++)

Platform::Array<T> escribe en C++/CX, o la palabra clave de array en C++/CLI, se declara una matriz de un tipo y un valor inicial especificados.

Todas las plataformas

La matriz se debe declarar con el modificador de identificador-a- objeto (^) después del corchete angular de cierre (>) en la declaración.

El número de elementos de la matriz no es parte del tipo. Una variable de matriz puede hacer referencia a las matrices de tamaños diferentes.

A diferencia de C++ estándar, la suscripción no es un sinónimo de la aritmética de punteros y no es conmutativa.

Para obtener más información sobre matrices, vea:

Windows en tiempo de ejecución

Las matrices son miembros del espacio de nombres de Platform . Las matrices pueden ser sólo unidimensionales.

Sintaxis

El primer ejemplo de sintaxis utiliza la palabra clave de agregado de ref new para asignar una matriz. El segundo ejemplo se declara una matriz local.

[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 [,...]}
  • qualifiers [opcional]
    Uno o más de estos especificadores de clase de almacenamiento: mutable, volatile, const, extern, estático.

  • array-type
    El tipo de la variable de matriz. Los tipos válidos son clases de Windows en tiempo de ejecución y tipos fundamentales, clases y structs de referencia, clases y structs de valor, y punteros nativos (type*).

  • rank [opcional]
    Número de dimensiones de la matriz. Debe ser 1.

  • identifier
    El nombre de la variable de matriz.

  • initialization-type
    El tipo de los valores que se inicializan la matriz. Normalmente, array-type y initialization-type son el mismo tipo. Sin embargo, los tipos pueden ser diferentes si hay una conversión de initialization-type a array-type(por ejemplo, si initialization-type se deriva de array-type.

  • initialization-list [opcional]
    Una lista de valores delimitada por comas entre llaves que inicializan elementos de la matriz. Por ejemplo, si rank-size-list era (3), que declara una matriz unidimensional de 3 elementos, initialization list podría ser {1,2,3}.

Comentarios

Puede detectar en tiempo de compilación si un tipo es una matriz referencia- contado con __is_ref_array(type). Para obtener más información, vea Compatibilidad de compilador para type traits (Extensiones de componentes de C++).

Requisitos

Opción del compilador: /ZW

Ejemplos

El ejemplo siguiente se crea una matriz unidimensional con 100 elementos.

// 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();
}

Common Language Runtime

Sintaxis

El primer ejemplo de sintaxis utiliza la palabra clave de gcnew para asignar una matriz. El segundo ejemplo se declara una matriz local.

[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 [,...]}
  • qualifiers [opcional]
    Uno o más de estos especificadores de clase de almacenamiento: mutable, volatile, const, extern, estático.

  • array-type
    El tipo de la variable de matriz. Los tipos válidos son clases de Windows en tiempo de ejecución y tipos fundamentales, clases y structs de referencia, clases y structs value, punteros nativos (type*), y tipos nativo POD (datos antiguos de nivel).

  • rank [opcional]
    Número de dimensiones de la matriz. El valor predeterminado es 1; el valor máximo es 32. Cada dimensión de la matriz es en sí mismo una matriz.

  • identifier
    El nombre de la variable de matriz.

  • initialization-type
    El tipo de los valores que se inicializan la matriz. Normalmente, array-type y initialization-type son el mismo tipo. Sin embargo, los tipos pueden ser diferentes si hay una conversión de initialization-type a array-type(por ejemplo, si initialization-type se deriva de array-type.

  • rank-size-list
    Una lista delimitada por comas del tamaño de cada dimensión de la matriz. Como alternativa, si se especifica el parámetro de initialization-list , el compilador puede deducir el tamaño de cada dimensión y rank-size-list puede omitir. Para obtener más información, vea Cómo: cree las matrices de Multidimension.

  • initialization-list [opcional]
    Una lista de valores delimitada por comas entre llaves que inicializan elementos de la matriz. O una lista delimitada por comas de elementos anidados de initialization-list inicializar los elementos de una matriz multidimensional.

    Por ejemplo, si rank-size-list era (3), que declara una matriz unidimensional de 3 elementos, initialization list podría ser {1,2,3}. Si rank-size-list era (3,2,4), que declara una matriz tridimensional de 3 elementos en la primera dimensión, 2 elementos en segundo, y 4 elementos en el tercero, initialization-list podrían ser {{1,2,3},{0,0},{-5,10,-21,99}}.)

Comentarios

array está en el espacio de nombres Espacios de nombres de plataforma, predeterminado y CLI (Extensiones de componentes de C++) .

Como C++ estándar, los índices de una matriz cero- se basan, y una matriz subscripted mediante corchetes ([]). A diferencia de C++ estándar, los índices de una matriz multidimensional se especifican en una lista de índices para cada dimensión en lugar de un conjunto de operadores entre corchetes ([]) para cada dimensión. Por ejemplo, identifier[index1, index2] en lugar de identifier[index1] [ index2].

Todas las matrices administradas heredan de System::Array. Cualquier método o propiedad de System::Array se puede aplicar directamente a la variable de matriz.

Cuando asigna una matriz cuyo tipo de elemento está puntero- a una clase administrada, los elementos son 0 inicializado.

Cuando asigna una matriz cuyo tipo de elemento es un tipo de valor V, se aplican al constructor predeterminado para V a cada elemento de matriz. Para obtener más información, vea Equivalentes de .NET Framework para tipos nativos de C++ (C++/CLI).

En tiempo de compilación, puede detectar si un tipo es una matriz de (CLR) de Common Language Runtime con __is_ref_array(type). Para obtener más información, vea Compatibilidad de compilador para type traits (Extensiones de componentes de C++).

Requisitos

Opción del compilador: /clr

Ejemplos

El ejemplo siguiente se crea una matriz unidimensional con 100 elementos, y una matriz tridimensional con 3 elementos en la primera dimensión, 5 elementos en segundo, y 6 elementos en el tercero.

// 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();
}

Vea también

Conceptos

Extensiones de componentes para plataformas de tiempo de ejecución