Partilhar via


Matrizes (Extensões de Componentes C++)

Platform::Array<T> em C++/CX, ou a palavra-chave de array em C++/CLI, declara uma matriz de um tipo especificado e um valor inicial.

Todas as Plataformas

A matriz deve ser declarado usando o modificador de alça-à- objeto (^) depois do ângulo de colchete de fechamento (>) na declaração.

O número de elementos da matriz não faz parte do tipo. Uma variável de matriz pode se referir a matrizes de tamanhos diferentes.

Ao contrário do padrão C++, a subscrição não é um sinônimo para o ponteiro aritmético e não é comutativa.

Para obter mais informações sobre matrizes, consulte:

Tempo de Execução do Windows

As matrizes são membros do namespace de Platform . Pode ser somente as matrizes unidimensionais.

Sintaxe

O primeiro exemplo de sintaxe usa a palavra-chave de agregação de ref new para alocar uma matriz. O segundo exemplo a seguir declara uma 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]
    Um ou mais destes especificadores da classe de armazenamento: mutável, temporário, const, extern, estáticos.

  • array-type
    O tipo da variável de matriz. Os tipos válidos são classes de Tempo de Execução do Windows e tipos de classes fundamentais, e estruturas de referência, classes e estruturas de valor, e ponteiros nativos (type*).

  • [rank opcional]
    O número de dimensões da matriz. Deve ser 1.

  • identifier
    O nome da variável de matriz.

  • initialization-type
    O tipo dos valores de inicialização a matriz. Normalmente, array-type e initialization-type são do mesmo tipo. Porém, os tipos podem ser diferentes se houver uma conversão de initialization-type a array-type— por exemplo, se initialization-type é derivado de array-type.

  • [initialization-list opcional]
    Uma lista delimitada por vírgulas dos valores entre colchetes encaracolado de inicialização os elementos da matriz. Por exemplo, se rank-size-list foi (3), que declara uma matriz unidimensional de 3 elementos, initialization list pode ser {1,2,3}.

Comentários

Você pode detectar em tempo de compilação se um tipo é uma matriz referência- contada com __is_ref_array(type). Para obter mais informações, consulte Suporte para Compilador de Traços de Tipo (Extensões de Componentes C++).

Requisitos

Opção do compilador: /ZW

Exemplos

O exemplo a seguir cria uma matriz unidimensional com 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

Sintaxe

O primeiro exemplo de sintaxe usa a palavra-chave de gcnew para alocar uma matriz. O segundo exemplo a seguir declara uma 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]
    Um ou mais destes especificadores da classe de armazenamento: mutável, temporário, const, extern, estáticos.

  • array-type
    O tipo da variável de matriz. Os tipos válidos são classes de Tempo de Execução do Windows e os tipos de fundamentais, as classes e as estruturas de referência, as classes e as estruturas de valor, os ponteiros nativos (type*), e a VAGEM nativo (dados antigos planos) tipo.

  • [rank opcional]
    O número de dimensões da matriz. O padrão é 1; o máximo é 32. Cada dimensão da matriz é própria uma matriz.

  • identifier
    O nome da variável de matriz.

  • initialization-type
    O tipo dos valores de inicialização a matriz. Normalmente, array-type e initialization-type são do mesmo tipo. Porém, os tipos podem ser diferentes se houver uma conversão de initialization-type a array-type— por exemplo, se initialization-type é derivado de array-type.

  • rank-size-list
    Uma lista delimitada por vírgulas do tamanho de cada dimensão na matriz. Como alternativa, se o parâmetro de initialization-list for especificado, o compilador pode deduzir o tamanho de cada dimensão e rank-size-list poderá ser omitido. Para obter mais informações, consulte Como: criar matrizes de Multidimension.

  • [initialization-list opcional]
    Uma lista delimitada por vírgulas dos valores entre colchetes encaracolado de inicialização os elementos da matriz. Ou uma lista delimitada por vírgulas de itens aninhados de initialization-list de inicialização os elementos em uma matriz multidimensional.

    Por exemplo, se rank-size-list foi (3), que declara uma matriz unidimensional de 3 elementos, initialization list pode ser {1,2,3}. Se rank-size-list foi (3,2,4), que declara uma matriz tridimensional de 3 elementos na primeira dimensão, 2 elementos no segundo, e 4 elementos no terceiro, initialization-list podem ser {{1,2,3},{0,0},{-5,10,-21,99}}.)

Comentários

array está no namespace de Namespaces Plataforma, padrão e cli (Extensões de Componentes C++) .

Como o padrão C++, os índices de uma matriz zero são baseados, e uma matriz subscripted usando colchetes ([]). Ao contrário do C++ padrão, os índices de uma matriz multidimensional são especificados em uma lista de índices para cada dimensão em vez de um conjunto de operadores de quadrado- colchetes ([]) para cada dimensão. Por exemplo, identifier[index1, index2] em vez de identifierindex1[] [] index2.

Todas as matrizes gerenciados herdam de System::Array. Qualquer método ou propriedade de System::Array podem ser aplicadas diretamente à variável de matriz.

Quando você atribui uma matriz cujo tipo de elemento é ponteiro- a uma classe gerenciada, os elementos são 0 inicializado.

Quando você atribui uma matriz cujo tipo de elemento é um tipo de valor V, o construtor padrão para V é aplicado a cada elemento da matriz. Para obter mais informações, consulte Equivalentes do .NET Framework aos tipos nativos do C++ (C++/CLI).

Em tempo de compilação, você pode detectar se um tipo é uma matriz de Common Language Runtime (CLR) com __is_ref_array(type). Para obter mais informações, consulte Suporte para Compilador de Traços de Tipo (Extensões de Componentes C++).

Requisitos

Opção do compilador: /clr

Exemplos

O exemplo a seguir cria uma matriz unidimensional com 100 elementos, e uma matriz tridimensional com 3 elementos na primeira dimensão, 5 elementos no segundo, terceiro e 6 elementos no.

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

Consulte também

Conceitos

Extensões de componente para plataformas de tempo de execução