Массивы (расширения компонентов C++)
Platform::Array<T> введите C++/CX или ключевое слово array в C++/CLI, объявить массив указанного типа и начального значения.
Все платформы
Массив должен быть объявлен с помощью модификатора маркер-к- объекта (^) квадратных скобок угла включения (>) в объявлении.
Количество элементов массива не является частью типа.Одна переменная массива может относиться к массивам различных размеров.
В отличие от стандартного C++, subscripting не синонима для указателя арифметического и не коммутативн.
Дополнительные сведения о массивах см. в разделах:
Как Создание управляемых массивов массивов (ступенчатые массивы)
Как Используйте управляемые массивы как типы параметров шаблона
Среда выполнения Windows
Массивы являются членами пространства имен Platform.Массивы могут быть только одномерный массив.
Синтаксис
Первый пример синтаксиса использует ключевое слово агрегата ref new для выбора массив.Во втором примере объявляется локальный массив.
[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 [,...]}
квалификаторы [необязательно]
Один или несколько из следующих описателей класса хранения: изменяемый, временный, const, extern, статический.array-type
Тип переменной массива.Допустимые типы классы и типы Среда выполнения Windows принципа, классы и структуры ref, классы и структуры значения и собственные указатели (type*).rank [необязательно]
Число измерений в массиве.Должно быть равно 1.identifier
Имя переменной массива.initialization-type
Тип значений, которые инициализируют массив.Как правило, array-type и initialization-type тот же тип.Однако типы могут различаться, если преобразование из initialization-type к array-type— например, если initialization-type является производным от array-type.initialization-list [необязательно]
Разделенный запятыми список значений в курчавых брекетах, которые инициализируют элементы массива.Например, если rank-size-list было (3), который объявляет одномерный массив 3 элементов, initialization list может быть {1,2,3}.
Заметки
Можно определить во время компиляции, является ли тип ссылка- подсчитанный массив с __is_ref_array(type).Дополнительные сведения см. в разделе Поддержка характеристик типов компилятором (расширения компонентов C++).
Требования
Параметр компилятора: /ZW
Примеры
Следующий пример создает одномерный массив с 100 элементов.
// 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();
}
Среда CLR
Синтаксис
Первый пример синтаксиса используется ключевое слово gcnew для выбора массив.Во втором примере объявляется локальный массив.
[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 [,...]}
квалификаторы [необязательно]
Один или несколько из следующих описателей класса хранения: изменяемый, временный, const, extern, статический.array-type
Тип переменной массива.Допустимые типы классы и типы Среда выполнения Windows принципа, классы и структуры ref, классы и структуры, собственные значения указателей (type*) и собственный СТРУЧОК (простые старые данные) типа.rank [необязательно]
Число измерений в массиве.Значение по умолчанию - 1. максимум 32.Каждое измерение является массива массив.identifier
Имя переменной массива.initialization-type
Тип значений, которые инициализируют массив.Как правило, array-type и initialization-type тот же тип.Однако типы могут различаться, если преобразование из initialization-type к array-type— например, если initialization-type является производным от array-type.rank-size-list
Разделенный запятыми список размер каждого измерения массива.Кроме того, если параметр initialization-list указан, компилятор может вывести размер каждого измерения и rank-size-list можно опустить.Дополнительные сведения см. в разделе Как Создание массивов Multidimension.initialization-list [необязательно]
Разделенный запятыми список значений в курчавых брекетах, которые инициализируют элементы массива.Или разделенный запятыми список вложенных элементов список инициализация-, которые инициализируют элементы в многомерный массив.Например, если rank-size-list было (3), который объявляет одномерный массив 3 элементов, initialization list может быть {1,2,3}.Если rank-size-list было (3,2,4), который объявляет трехмерный массив 3 элементов в первом измерении, 2 элемента во второй, а вызывается в третьем initialization-list 4 элемента, могут быть {{1,2,3},{0,0},{-5,10,-21,99}}).
Заметки
array в пространстве имен Пространства имен platform, default и cli (расширения компонентов C++).
Как стандартное C++, нулевой- основаны индексов массива, а также массив subscripted с помощью квадратных скобк ([]).В отличие от стандартного C++, индексы определены в списке многомерного массива индексов для каждого измерения, а не набора операторов квадрат- брекета ([]) для каждого измерения.Например, идентификатор[index1, index2] вместо идентификатор[index1] [ index2].
Все управляемые массивы являются производными от System::Array.Любой метод или свойство System::Array можно применять непосредственно к переменной массива.
При выборе массива, тип элементов которого указатель- на управляемый класс элементы инициализированное 0.
При выборе массива, тип элементов которого является типом значения V, применяется конструктор по умолчанию для V к каждому элементу массива.Дополнительные сведения см. в разделе Эквиваленты собственным типам C++ в .NET Framework (C++/CLI).
Во время компиляции, можно определить, является ли тип массива среды CLR с __is_ref_array(type).Дополнительные сведения см. в разделе Поддержка характеристик типов компилятором (расширения компонентов C++).
Требования
Параметр компилятора: /clr
Примеры
Следующий пример создает одномерный массив, который содержит 100 элементов и трехмерный массив с 3 элемента в первом измерении, 5 элементов второго и третьего 6 элементов.
// 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();
}