## Array class


Класс, представляющий структуру данных массива. Объекты этого класса должны создаваться только с помощью функций [System::MakeArray()](../makearray/) и [System::MakeObject()](../makeobject/). Никогда не создавайте экземпляр этого типа на стеке или с помощью оператора new, так как это приведёт к ошибкам выполнения и/или сбоям утверждений. Всегда оборачивайте этот класс в указатель [System::SmartPtr](../smartptr/) и используйте этот указатель для передачи его в функции в качестве аргумента.

```cpp
template<typename T>class Array : public virtual System::Object,
                                  public System::Collections::Generic::IList<T>
```


| Параметр | Описание |
| --- | --- |
| T | Тип элементов массива |
## Nested classes

* Class [Enumerator](./enumerator/)
## Методы

| Метод | Описание |
| --- | --- |
| [Add](./add/)(const T\&) override | Не поддерживается, поскольку массив, представленный текущим объектом, доступен только для чтения. |
| [Array](./array/)() | Создаёт пустой массив. |
| [Array](./array/)(int, const T\&) | Конструктор заполнения. |
| [Array](./array/)(typename std::enable_if\<std::is_arithmetic\<T\>::value\&&std::is_arithmetic\<ValueType\>::value\&&std::is_convertible\<ValueType, T\>::value, int\>::type, ValueType) | Конструктор заполнения. |
| [Array](./array/)(int, const T) | Конструктор заполнения. |
| [Array](./array/)(vector_t\&&) | Конструктор перемещения. |
| [Array](./array/)(const vector_t\&) | Конструктор копирования. |
| [Array](./array/)(const std::vector\<Q\>\&) | Создаёт объект [Array](./) и заполняет его значениями, скопированными из объекта std::vector, тип значений которого совпадает с **T**, но отличается от **[UnderlyingType](./underlyingtype/)**. |
| [Array](./array/)(std::vector\<Q\>\&&) | Создаёт объект [Array](./) и заполняет его значениями, перемещёнными из объекта std::vector, тип значений которого совпадает с **T**, но отличается от **[UnderlyingType](./underlyingtype/)**. |
| [Array](./array/)(std::initializer_list\<UnderlyingType\>) | Создаёт объект [Array](./) и заполняет его значениями из указанного списка инициализации, содержащего элементы типа **[UnderlyingType](./underlyingtype/)**. |
| [Array](./array/)(const std::array\<UnderlyingType, InitArraySize\>\&) | Создает объект [Array](./) и заполняет его значениями из указанного массива, содержащего элементы типа **[UnderlyingType](./underlyingtype/)**. |
| [Array](./array/)(std::initializer_list\<bool\>, int) | Создает объект [Array](./) и заполняет его значениями из указанного списка инициализаторов, содержащего элементы типа bool. |
| [begin](./begin/)() | Возвращает итератор на первый элемент контейнера. Если контейнер пуст, возвращённый итератор будет равен [end()](./end/). |
| [begin](./begin/)() const | Возвращает итератор на первый элемент константного контейнера. Если контейнер пуст, возвращённый итератор будет равен [end()](./end/). |
| static [BinarySearch](./binarysearch/)(System::ArrayPtr\<T\>, const T\&) | Выполняет двоичный поиск в отсортированном массиве. |
| static [BinarySearch](./binarysearch/)(System::ArrayPtr\<T\>, const Y\&, const SharedPtr\<Collections::Generic::IComparer\<Z\>\>\&) | НЕ РЕАЛИЗОВАНО. |
| [cbegin](./cbegin/)() const | Возвращает итератор на первый константный элемент контейнера. Если контейнер пуст, возвращённый итератор будет равен [cend()](./cend/). |
| [cend](./cend/)() const | Возвращает итератор на элемент, следующий за последним элементом контейнера. Этот элемент служит заполнительным; попытка доступа к нему приводит к неопределённому поведению. |
| [Clear](./clear/)() override | Не поддерживается, поскольку массив, представленный текущим объектом, доступен только для чтения. |
| static [Clear](./clear/)(const ArrayPtr\<Type\>\&, int, int) | Заменяет **count** значений, начиная с индекса **startIndex**, в указанном массиве значениями по умолчанию. |
| [Clone](./clone/)() | Клонирует массив. |
| static [ConstrainedCopy](./constrainedcopy/)(const ArrayPtr\<SrcType\>\&, int64_t, const ArrayPtr\<DstType\>\&, int64_t, int64_t) | Копирует диапазон элементов из [System.Array](./), начиная с указанного источника. |
| [Contains](./contains/)(const T\&) const override | Определяет, находится ли указанный элемент в массиве. |
| static [ConvertAll](./convertall/)(ArrayPtr\<InputType\>, Converter\<InputType, OutputType\>) | Создает новый объект [Array](./) и заполняет его элементами указанного массива, преобразованными в тип **OutputType** с помощью указанного делегата преобразователя. |
| static [ConvertAll](./convertall/)(ArrayPtr\<InputType\>, std::function\<OutputType(InputType)>) | Создает новый объект [Array](./) и заполняет его элементами указанного массива, преобразованными в тип **OutputType** с помощью указанного объектa функции‑преобразователя. |
| static [Copy](./copy/)(const ArrayPtr\<SrcType\>\&, const ArrayPtr\<DstType\>\&, int64_t) | Копирует указанное количество элементов из исходного массива в массив назначения. |
| static [Copy](./copy/)(System::Details::ArrayView\<SrcType\>, const ArrayPtr\<DstType\>\&, int64_t) | Копирует указанное количество элементов из представления исходного массива в массив назначения. |
| static [Copy](./copy/)(const ArrayPtr\<SrcType\>\&, System::Details::ArrayView\<DstType\>, int64_t) | Копирует указанное количество элементов из исходного массива в представление массива назначения. |
| static [Copy](./copy/)(System::Details::ArrayView\<SrcType\>, System::Details::ArrayView\<DstType\>, int64_t) | Копирует указанное количество элементов из представления исходного массива в представление массива назначения. |
| static [Copy](./copy/)(System::Details::StackArray\<SrcType, N\>\&, const ArrayPtr\<DstType\>\&, int64_t) | Копирует указанное количество элементов из массива на стеке в массив назначения. |
| static [Copy](./copy/)(const ArrayPtr\<SrcType\>\&, System::Details::StackArray\<DstType, N\>\&, int64_t) | Копирует указанное количество элементов из исходного массива в массив назначения на стеке. |
| static [Copy](./copy/)(System::Details::StackArray\<SrcType, NS\>\&, System::Details::StackArray\<DstType, ND\>\&, int64_t) | Копирует указанное количество элементов из массива на стеке в массив назначения на стеке. |
| static [Copy](./copy/)(const ArrayPtr\<SrcType\>\&, int64_t, const ArrayPtr\<DstType\>\&, int64_t, int64_t) | Копирует указанное количество элементов из исходного массива, начиная с указанного индекса, в указанную позицию массива назначения. |
| static [Copy](./copy/)(System::Details::ArrayView\<SrcType\>, int64_t, const ArrayPtr\<DstType\>\&, int64_t, int64_t) | Копирует указанное количество элементов из представления исходного массива, начиная с указанного индекса, в указанную позицию массива назначения. |
| static [Copy](./copy/)(const ArrayPtr\<SrcType\>\&, int64_t, System::Details::ArrayView\<DstType\>, int64_t, int64_t) | Копирует указанное количество элементов из исходного массива, начиная с указанного индекса, в указанную позицию представления массива назначения. |
| static [Copy](./copy/)(System::Details::ArrayView\<SrcType\>, int64_t, System::Details::ArrayView\<DstType\>, int64_t, int64_t) | Копирует указанное количество элементов из представления исходного массива, начиная с указанного индекса, в указанную позицию представления массива назначения. |
| static [Copy](./copy/)(System::Details::StackArray\<SrcType, N\>\&, int64_t, const ArrayPtr\<DstType\>\&, int64_t, int64_t) | Копирует указанное количество элементов из массива на стеке, начиная с указанного индекса, в указанную позицию массива назначения. |
| static [Copy](./copy/)(const ArrayPtr\<SrcType\>\&, int64_t, System::Details::StackArray\<DstType, N\>\&, int64_t, int64_t) | Копирует указанное количество элементов из исходного массива, начиная с указанного индекса, в указанную позицию массива назначения на стеке. |
| static [Copy](./copy/)(System::Details::StackArray\<SrcType, NS\>\&, int64_t, System::Details::StackArray\<DstType, ND\>\&, int64_t, int64_t) | Копирует указанное количество элементов из массива на стеке, начиная с указанного индекса, в указанную позицию массива назначения на стеке. |
| static [Copy](./copy/)(System::Details::ArrayView\<SrcType\>\&, int64_t, System::Details::StackArray\<DstType, ND\>\&, int64_t, int64_t) | Копирует указанное количество элементов из представления исходного массива, начиная с указанного индекса, в указанную позицию массива назначения на стеке. |
| [CopyTo](./copyto/)(ArrayPtr\<T\>, int) override | Копирует все элементы текущего массива в указанный массив назначения. Элементы вставляются в массив назначения, начиная с индекса, указанного аргументом arrayIndex. |
| [CopyTo](./copyto/)(const ArrayPtr\<DstType\>\&, int64_t) const | Копирует все элементы текущего массива в указанный массив назначения. Элементы вставляются в массив назначения, начиная с индекса, указанного аргументом dstIndex. |
| [CopyTo](./copyto/)(const System::Details::ArrayView\<DstType\>\&, int64_t) const | Копирует все элементы текущего массива в указанное представление массива назначения. Элементы вставляются в представление массива назначения, начиная с индекса, указанного аргументом dstIndex. |
| [CopyTo](./copyto/)(const ArrayPtr\<DstType\>\&, int64_t, int64_t, int64_t) const | Копирует указанное количество элементов из текущего массива, начиная с указанной позиции, в указанный массив назначения. Элементы вставляются в массив назначения, начиная с индекса, указанного аргументом dstIndex. |
| [CopyTo](./copyto/)(const System::Details::ArrayView\<DstType\>\&, int64_t, int64_t, int64_t) const | Копирует указанное количество элементов из текущего массива, начиная с указанной позиции, в указанное представление массива назначения. Элементы вставляются в представление массива назначения, начиная с индекса, указанного аргументом dstIndex. |
| [Count](./count/)() const | Возвращает число, представляющее общее количество всех элементов во всех измерениях массива. |
| [crbegin](./crbegin/)() const | Возвращает обратный итератор на первый элемент обратного контейнера. Он соответствует последнему элементу обычного контейнера. Если контейнер пуст, возвращённый итератор будет равен [crend()](./crend/). |
| [crend](./crend/)() const | Возвращает обратный итератор на элемент, следующий за последним элементом обратного контейнера. Он соответствует элементу, предшествующему первому элементу обычного контейнера. Этот элемент служит заполнительным, попытка доступа к нему приводит к неопределённому поведению. |
| [data](./data/)() | Возвращает ссылку на внутреннюю структуру данных, используемую для хранения элементов массива. |
| [data](./data/)() const | Возвращает константную ссылку на внутреннюю структуру данных, используемую для хранения элементов массива. |
| [data_ptr](./data_ptr/)() | Возвращает необработанный указатель на начало буфера памяти, где хранятся элементы массива. |
| [data_ptr](./data_ptr/)() const | Возвращает константный необработанный указатель на начало буфера памяти, где хранятся элементы массива. |
| [end](./end/)() | Возвращает итератор на элемент, следующий за последним элементом контейнера. Этот элемент служит заполнительным; попытка доступа к нему приводит к неопределённому поведению. |
| [end](./end/)() const | Возвращает итератор на элемент, следующий за последним элементом константного контейнера. Этот элемент служит заполнительным; попытка доступа к нему приводит к неопределённому поведению. |
| static [Exists](./exists/)(ArrayPtr\<T\>, std::function\<bool(T)>) | Определяет, содержит ли указанный объект [Array](./) элемент, удовлетворяющий требованиям указанного предиката. |
| static [Find](./find/)(System::ArrayPtr\<T\>, System::Predicate\<T\>) | Ищет первый элемент в указанном массиве, который удовлетворяет условиям указанного предиката. |
| static [FindAll](./findall/)(System::ArrayPtr\<T\>, System::Predicate\<T\>) | Получает все элементы, соответствующие условиям, определённым указанным предикатом. |
| static [FindIndex](./findindex/)(System::ArrayPtr\<T\>, System::Predicate\<T\>) | Ищет первый элемент в указанном массиве, который удовлетворяет условиям указанного предиката. |
| static [ForEach](./foreach/)(const ArrayPtr\<T\>\&, System::Action\<T\>) | Выполняет указанное действие над каждым элементом указанного массива. |
| [get_Count](./get_count/)() const override | Возвращает размер массива. |
| [get_IsReadOnly](./get_isreadonly/)() const override | Указывает, является ли массив только для чтения. |
| [get_Length](./get_length/)() const | Возвращает 32‑битное целое число, представляющее общее количество всех элементов во всех измерениях массива. |
| [get_LongLength](./get_longlength/)() const | Возвращает 64‑битное целое число, представляющее общее количество всех элементов во всех измерениях массива. |
| [get_Rank](./get_rank/)() const | НЕ РЕАЛИЗОВАНО. |
| [GetEnumerator](./getenumerator/)() override | Возвращает указатель на объект [Enumerator](./enumerator/), предоставляющий интерфейс IEnumerator к элементам массива, представленному текущим объектом. |
| [GetLength](./getlength/)(int) | Возвращает количество элементов в указанном измерении. |
| [GetLongLength](./getlonglength/)(int) | Возвращает количество элементов в указанном измерении в виде 64‑битного целого числа. |
| [GetLowerBound](./getlowerbound/)(int) const | Возвращает нижнюю границу указанного измерения. |
| [GetSizeTLength](./getsizetlength/)() const | Возвращает переменную std::size_t, представляющую общее количество всех элементов во всех измерениях массива. |
| [GetUpperBound](./getupperbound/)(int) | Возвращает верхнюю границу указанного измерения. |
| [idx_get](./idx_get/)(int) const override | Возвращает элемент по указанному индексу. |
| [idx_set](./idx_set/)(int, T) override | Устанавливает указанное значение как элемент массива по указанному индексу. |
| [IndexOf](./indexof/)(const T\&) const override | Определяет индекс первого вхождения указанного элемента в массив. |
| static [IndexOf](./indexof/)(const ArrayPtr\<ArrayType\>\&, const ValueType\&) | Определяет индекс первого вхождения указанного элемента в массив. |
| static [IndexOf](./indexof/)(const ArrayPtr\<ArrayType\>\&, const ValueType\&, int) | Определяет индекс первого вхождения указанного элемента в массив, начиная с указанного индекса. |
| static [IndexOf](./indexof/)(const ArrayPtr\<ArrayType\>\&, const ValueType\&, int, int) | Определяет индекс первого вхождения указанного элемента в диапазоне элементов массива, заданном начальным индексом и количеством элементов в диапазоне. |
| [Init](./init/)(const T) | Заполняет массив, представляемый текущим объектом, значениями из указанного массива. |
| [Initialize](./initialize/)() | Заполняет массив объектами типа **T**, созданными по умолчанию. |
| [Insert](./insert/)(int, const T\&) override | Не поддерживается, поскольку массив, представляемый текущим объектом, только для чтения. |
| static [LastIndexOf](./lastindexof/)(const ArrayPtr\<ArrayType\>\&, const ValueType\&, int, int) | Определяет индекс последнего вхождения указанного элемента в диапазоне элементов массива, заданном начальным индексом и количеством элементов в диапазоне. |
| static [LastIndexOf](./lastindexof/)(const ArrayPtr\<ArrayType\>\&, const ValueType\&, int) | Определяет индекс последнего вхождения указанного элемента в массив, начиная с указанного индекса. |
| static [LastIndexOf](./lastindexof/)(const ArrayPtr\<ArrayType\>\&, const ValueType\&) | Определяет индекс последнего вхождения указанного элемента в массив. |
| [Max](./max/)() const | Находит наибольший элемент в массиве, используя [operator<()](../operator_/) для сравнения элементов. |
| [Min](./min/)() const | Находит наименьший элемент в массиве, используя [operator<()](../operator_/) для сравнения элементов. |
| [operator[]](./operator[]/)(int) | Возвращает элемент по указанному индексу. |
| [operator[]](./operator[]/)(int) const | Возвращает элемент по указанному индексу. |
| [rbegin](./rbegin/)() | Возвращает обратный итератор к первому элементу перевёрнутого контейнера. Он соответствует последнему элементу неперевёрнутого контейнера. Если контейнер пуст, возвращённый итератор равен [rend()](./rend/). |
| [rbegin](./rbegin/)() const | Возвращает обратный итератор к первому элементу перевёрнутого контейнера. Он соответствует последнему элементу неперевёрнутого контейнера. Если контейнер пуст, возвращённый итератор равен [rend()](./rend/). |
| [Remove](./remove/)(const T\&) override | Не поддерживается, поскольку массив, представленный текущим объектом, доступен только для чтения. |
| [RemoveAt](./removeat/)(int) override | Не поддерживается, поскольку массив, представляемый текущим объектом, только для чтения. |
| [rend](./rend/)() | Возвращает обратный итератор на элемент, следующий за последним элементом обратного контейнера. Он соответствует элементу, предшествующему первому элементу обычного контейнера. Этот элемент служит заполнительным, попытка доступа к нему приводит к неопределённому поведению. |
| [rend](./rend/)() const | Возвращает обратный итератор на элемент, следующий за последним элементом обратного контейнера. Он соответствует элементу, предшествующему первому элементу обычного контейнера. Этот элемент служит заполнительным, попытка доступа к нему приводит к неопределённому поведению. |
| static [Resize](./resize/)(ArrayPtr\<Type\>\&, int) | Изменяет размер указанного массива до заданного значения или создает новый массив с указанным размером. |
| static [Reverse](./reverse/)(const ArrayPtr\<Type\>\&) | Разворачивает элементы в указанном массиве. |
| static [Reverse](./reverse/)(const ArrayPtr\<Type\>\&, int, int) | Разворачивает диапазон элементов в указанном массиве. |
| [SetTemplateWeakPtr](./settemplateweakptr/)(uint32_t) override | Заставляет массив рассматривать хранимые указатели как слабые (если применимо). |
| [SetValue](./setvalue/)(const T\&, int) | Устанавливает значение элемента по указанному индексу. |
| static [Sort](./sort/)(const ArrayPtr\<Type\>\&) | Сортирует элементы в указанном массиве, используя сравниватель по умолчанию. |
| static [Sort](./sort/)(const ArrayPtr\<Type\>\&, int, int) | Сортирует диапазон элементов в указанном массиве, используя сравниватель по умолчанию. |
| static [Sort](./sort/)(const ArrayPtr\<Type\>\&, const SharedPtr\<System::Collections::Generic::IComparer\<T\>\>\&) | Сортирует элементы в указанном массиве, используя указанный сравниватель. |
| static [Sort](./sort/)(const ArrayPtr\<Type\>\&, const SharedPtr\<System::Collections::Generic::IComparer\<Y\>\>\&) | НЕ РЕАЛИЗОВАНО. |
| static [Sort](./sort/)(const ArrayPtr\<TKey\>\&, const ArrayPtr\<TValue\>\&) | Сортирует два массива, один содержащий ключи, а другой — соответствующие элементы, основываясь на значениях массива с ключами, элементы которого сравниваются с помощью operator<. |
| static [Sort](./sort/)(const ArrayPtr\<TKey\>\&, const ArrayPtr\<TValue\>\&, int, int) | Сортирует два массива, один содержащий ключи, а другой — соответствующие элементы, основываясь на значениях массива с ключами, элементы которого сравниваются с помощью сравнивателя по умолчанию. |
| static [TrueForAll](./trueforall/)(System::ArrayPtr\<T\>, System::Predicate\<T\>) | Определяет, удовлетворяют ли все элементы в указанном массиве условиям, определённым указанным предикатом. |
| [virtualizeBeginConstIterator](./virtualizebeginconstiterator/)() const override | Получает реализацию константного итератора begin для текущего контейнера. |
| [virtualizeBeginIterator](./virtualizebeginiterator/)() override | Получает реализацию итератора begin для текущего контейнера. |
| [virtualizeEndConstIterator](./virtualizeendconstiterator/)() const override | Получает реализацию константного итератора end для текущего контейнера. |
| [virtualizeEndIterator](./virtualizeenditerator/)() override | Получает реализацию итератора end для текущего контейнера. |
## Typedefs

| Определение типа. | Описание |
| --- | --- |
| [const_iterator](./const_iterator/) | Тип константного итератора. |
| [const_reverse_iterator](./const_reverse_iterator/) | Тип константного обратного итератора. |
| [EnumerablePtr](./enumerableptr/) | Псевдоним для типа умного указателя, указывающего на объект IEnumerable, содержащий элементы типа **T**. |
| [EnumeratorPtr](./enumeratorptr/) | Псевдоним для типа умного указателя, указывающего на объект IEnumerator, содержащий элементы типа **T**. |
| [iterator](./iterator/) | Тип итератора. |
| [reverse_iterator](./reverse_iterator/) | Тип обратного итератора. |
| [UnderlyingType](./underlyingtype/) | Псевдоним типа, используемого для представления каждого элемента массива. |
| [ValueType](./valuetype/) | Псевдоним типа элементов массива. |
## Примечания



```cpp
#include <system/array.h>
#include <system/smart_ptr.h>

using namespace System;

void Print(const SmartPtr<Array<int32_t>> &arrayPtr)
{
  for (auto item: arrayPtr)
  {
    std::cout << item << ' ';
  }
  std::cout << std::endl;
}

int main()
{
  // Создайте и заполните массив.
  auto arrayPtr = MakeObject<Array<int32_t>>(5, 0);
  for (auto i = 0; i < arrayPtr->get_Length(); ++i)
  {
    arrayPtr[i] = 5 - i;
  }

  // Выведите элементы массива.
  Print(arrayPtr);

  // Сортировать элементы массива по возрастанию.
  Array<int32_t>::Sort(arrayPtr);

  // Выведите элементы массива.
  Print(arrayPtr);

  // Вывести количество элементов массива.
  std::cout << arrayPtr->get_Length() << std::endl;

  // Вывести индекс элемента, равного 4.
  std::cout << arrayPtr->IndexOf(4) << std::endl;

  // Изменить размер массива.
  Array<int32_t>::Resize(arrayPtr, 3);

  // Выведите элементы массива.
  Print(arrayPtr);

  return 0;
}
/*
This code example produces the following output:
5 4 3 2 1
1 2 3 4 5
5
3
1 2 3
*/
```

## См. также

* Class [Object](../object/)
* Class [IList](../../system.collections.generic/ilist/)
* Namespace [System](../)
* Library [Aspose.Page for C++](../../)
