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:
Cómo: Cree las matrices de matrices administradas (matrices escalonadas)
Cómo: Cree definiciones de tipos para matrices administradas
Cómo: Matrices administradas de uso como parámetros de tipo de plantilla
Cómo: Matrices de ordenación mediante criterios personalizados
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