Класс System::Array

Array class

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

template<typename T>class Array : public virtual System::Object,
                                  public System::Collections::Generic::IList<T>
ПараметрОписание
TТип элементов массива

Nested classes

Методы

МетодОписание
Add(const T&) overrideНе поддерживается, поскольку массив, представляемый текущим объектом, доступен только для чтения.
Array()Создаёт пустой массив.
Array(int, const T&)Конструктор заполнения.
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(int, const T)Конструктор заполнения.
Array(vector_t&&)Конструктор перемещения.
Array(const vector_t&)Конструктор копирования.
Array(const std::vector<Q>&)Создаёт объект Array и заполняет его значениями, скопированными из объекта std::vector, тип значений которого совпадает с T, но отличается от UnderlyingType.
Array(std::vector<Q>&&)Создаёт объект Array и заполняет его значениями, перемещёнными из объекта std::vector, тип значений которого совпадает с T, но отличается от UnderlyingType.
Array(std::initializer_list<UnderlyingType>)Создаёт объект Array и заполняет его значениями из указанного списка инициализации, содержащего элементы типа UnderlyingType.
Array(const std::array<UnderlyingType, InitArraySize>&)Создаёт объект Array и заполняет его значениями из указанного массива, содержащего элементы типа UnderlyingType.
Array(std::initializer_list<bool>, int)Создаёт объект Array и заполняет его значениями из указанного списка инициализации, содержащего элементы типа bool.
begin()Возвращает итератор на первый элемент контейнера. Если контейнер пуст, возвращаемый итератор будет равен end().
begin() constВозвращает итератор на первый элемент константного контейнера. Если контейнер пуст, возвращаемый итератор будет равен end().
static BinarySearch(System::ArrayPtr<T>, const T&)Выполняет бинарный поиск в отсортированном массиве.
static BinarySearch(System::ArrayPtr<T>, const Y&, const SharedPtr<Collections::Generic::IComparer<Z>>&)НЕ РЕАЛИЗОВАНО.
cbegin() constВозвращает итератор на первый элемент, объявленный как const, в контейнере. Если контейнер пуст, возвращаемый итератор будет равен cend().
cend() constВозвращает итератор на элемент, следующий за последним элементом контейнера. Этот элемент служит заполнительным; попытка доступа к нему приводит к неопределённому поведению.
Clear() overrideНе поддерживается, поскольку массив, представляемый текущим объектом, доступен только для чтения.
static Clear(const ArrayPtr<Type>&, int, int)Заменяет count значений, начиная с индекса startIndex, в указанном массиве значениями по умолчанию.
Clone()Клонирует массив.
static ConstrainedCopy(const ArrayPtr<SrcType>&, int64_t, const ArrayPtr<DstType>&, int64_t, int64_t)Копирует диапазон элементов из System.Array, начиная с указанного источника.
Contains(const T&) const overrideОпределяет, находится ли указанный элемент в массиве.
static ConvertAll(ArrayPtr<InputType>, Converter<InputType, OutputType>)Создаёт новый объект Array и заполняет его элементами указанного массива, преобразованными в тип OutputType с помощью указанного делегата‑конвертера.
static ConvertAll(ArrayPtr<InputType>, std::function<OutputType(InputType)>)Создаёт новый объект Array и заполняет его элементами указанного массива, преобразованными в тип OutputType с помощью указанного объект‑функции‑конвертера.
static Copy(const ArrayPtr<SrcType>&, const ArrayPtr<DstType>&, int64_t)Копирует указанное количество элементов из исходного массива в целевой массив.
static Copy(System::Details::ArrayView<SrcType>, const ArrayPtr<DstType>&, int64_t)Копирует указанное количество элементов из представления исходного массива в целевой массив.
static Copy(const ArrayPtr<SrcType>&, System::Details::ArrayView<DstType>, int64_t)Копирует указанное количество элементов из исходного массива в представление целевого массива.
static Copy(System::Details::ArrayView<SrcType>, System::Details::ArrayView<DstType>, int64_t)Копирует указанное количество элементов из представления исходного массива в представление целевого массива.
static Copy(System::Details::StackArray<SrcType, N>&, const ArrayPtr<DstType>&, int64_t)Копирует указанное количество элементов из исходного массива в стеке в целевой массив.
static Copy(const ArrayPtr<SrcType>&, System::Details::StackArray<DstType, N>&, int64_t)Копирует указанное количество элементов из исходного массива в целевой массив в стеке.
static Copy(System::Details::StackArray<SrcType, NS>&, System::Details::StackArray<DstType, ND>&, int64_t)Копирует указанное количество элементов из исходного массива в стеке в целевой массив в стеке.
static Copy(const ArrayPtr<SrcType>&, int64_t, const ArrayPtr<DstType>&, int64_t, int64_t)Копирует указанное количество элементов из исходного массива, начиная с указанного индекса, в указанную позицию целевого массива.
static Copy(System::Details::ArrayView<SrcType>, int64_t, const ArrayPtr<DstType>&, int64_t, int64_t)Копирует указанное количество элементов из представления исходного массива, начиная с указанного индекса, в указанную позицию целевого массива.
static Copy(const ArrayPtr<SrcType>&, int64_t, System::Details::ArrayView<DstType>, int64_t, int64_t)Копирует указанное количество элементов из исходного массива, начиная с указанного индекса, в указанную позицию представления целевого массива.
static Copy(System::Details::ArrayView<SrcType>, int64_t, System::Details::ArrayView<DstType>, int64_t, int64_t)Копирует указанное количество элементов из представления исходного массива, начиная с указанного индекса, в указанную позицию представления целевого массива.
static Copy(System::Details::StackArray<SrcType, N>&, int64_t, const ArrayPtr<DstType>&, int64_t, int64_t)Копирует указанное количество элементов из исходного массива в стеке, начиная с указанного индекса, в указанную позицию целевого массива.
static Copy(const ArrayPtr<SrcType>&, int64_t, System::Details::StackArray<DstType, N>&, int64_t, int64_t)Копирует указанное количество элементов из исходного массива, начиная с указанного индекса, в указанную позицию целевого массива в стеке.
static Copy(System::Details::StackArray<SrcType, NS>&, int64_t, System::Details::StackArray<DstType, ND>&, int64_t, int64_t)Копирует указанное количество элементов из исходного массива в стеке, начиная с указанного индекса, в указанную позицию целевого массива в стеке.
static Copy(System::Details::ArrayView<SrcType>&, int64_t, System::Details::StackArray<DstType, ND>&, int64_t, int64_t)Копирует указанное количество элементов из представления исходного массива, начиная с указанного индекса, в указанную позицию целевого массива в стеке.
CopyTo(ArrayPtr<T>, int) overrideКопирует все элементы текущего массива в указанный целевой массив. Элементы вставляются в целевой массив, начиная с индекса, указанного аргументом arrayIndex.
CopyTo(const ArrayPtr<DstType>&, int64_t) constКопирует все элементы текущего массива в указанный целевой массив. Элементы вставляются в целевой массив, начиная с индекса, указанного аргументом dstIndex.
CopyTo(const System::Details::ArrayView<DstType>&, int64_t) constКопирует все элементы текущего массива в указанное представление целевого массива. Элементы вставляются в представление целевого массива, начиная с индекса, указанного аргументом dstIndex.
CopyTo(const ArrayPtr<DstType>&, int64_t, int64_t, int64_t) constКопирует указанное количество элементов из текущего массива, начиная с указанной позиции, в указанный целевой массив. Элементы вставляются в целевой массив, начиная с индекса, указанного аргументом dstIndex.
CopyTo(const System::Details::ArrayView<DstType>&, int64_t, int64_t, int64_t) constКопирует указанное количество элементов из текущего массива, начиная с указанной позиции, в указанное представление целевого массива. Элементы вставляются в представление целевого массива, начиная с индекса, указанного аргументом dstIndex.
Count() constВозвращает число, представляющее общее количество всех элементов во всех измерениях массива.
crbegin() constВозвращает обратный итератор на первый элемент обратного контейнера. Он соответствует последнему элементу обычного контейнера. Если контейнер пуст, возвращаемый итератор равен crend().
crend() constВозвращает обратный итератор на элемент, следующий за последним элементом обратного контейнера. Он соответствует элементу, предшествующему первому элементу обычного контейнера. Этот элемент служит заполнительным; попытка доступа к нему приводит к неопределённому поведению.
data()Возвращает ссылку на внутреннюю структуру данных, используемую для хранения элементов массива.
data() constВозвращает константную ссылку на внутреннюю структуру данных, используемую для хранения элементов массива.
data_ptr()Возвращает необработанный указатель на начало буфера памяти, где хранятся элементы массива.
data_ptr() constВозвращает константный необработанный указатель на начало буфера памяти, где хранятся элементы массива.
end()Возвращает итератор на элемент, следующий за последним элементом контейнера. Этот элемент служит заполнительным; попытка доступа к нему приводит к неопределённому поведению.
end() constВозвращает итератор на элемент, следующий за последним элементом константного контейнера. Этот элемент служит заполнительным; попытка доступа к нему приводит к неопределённому поведению.
static Exists(ArrayPtr<T>, std::function<bool(T)>)Определяет, содержит ли указанный объект Array элемент, удовлетворяющий требованиям указанного предиката.
static Find(System::ArrayPtr<T>, System::Predicate<T>)Ищет первый элемент в указанном массиве, который удовлетворяет условиям указанного предиката.
static FindAll(System::ArrayPtr<T>, System::Predicate<T>)Получает все элементы, соответствующие условиям, определённым указанным предикатом.
static FindIndex(System::ArrayPtr<T>, System::Predicate<T>)Ищет первый элемент в указанном массиве, который удовлетворяет условиям указанного предиката.
static ForEach(const ArrayPtr<T>&, System::Action<T>)Выполняет указанное действие для каждого элемента указанного массива.
get_Count() const overrideВозвращает размер массива.
get_IsReadOnly() const overrideУказывает, является ли массив только для чтения.
get_Length() constВозвращает 32-битное целое число, представляющее общее количество всех элементов во всех измерениях массива.
get_LongLength() constВозвращает 64-битное целое число, представляющее общее количество всех элементов во всех измерениях массива.
get_Rank() constНЕ РЕАЛИЗОВАНО.
GetEnumerator() overrideВозвращает указатель на объект Enumerator, предоставляющий интерфейс IEnumerator к элементам массива, представленного текущим объектом.
GetLength(int)Возвращает количество элементов в указанном измерении.
GetLongLength(int)Возвращает количество элементов в указанном измерении как 64-битное целое число.
GetLowerBound(int) constВозвращает нижнюю границу указанного измерения.
GetSizeTLength() constВозвращает переменную std::size_t, представляющую общее количество всех элементов во всех измерениях массива.
GetUpperBound(int)Возвращает верхнюю границу указанного измерения.
idx_get(int) const overrideВозвращает элемент по указанному индексу.
idx_set(int, T) overrideУстанавливает указанное значение как элемент массива по указанному индексу.
IndexOf(const T&) const overrideОпределяет индекс первого вхождения указанного элемента в массив.
static IndexOf(const ArrayPtr<ArrayType>&, const ValueType&)Определяет индекс первого вхождения указанного элемента в массив.
static IndexOf(const ArrayPtr<ArrayType>&, const ValueType&, int)Определяет индекс первого вхождения указанного элемента в массив, начиная с указанного индекса.
static IndexOf(const ArrayPtr<ArrayType>&, const ValueType&, int, int)Определяет индекс первого вхождения указанного элемента в диапазоне элементов массива, заданного начальным индексом и количеством элементов в диапазоне.
Init(const T)Заполняет массив, представляемый текущим объектом, значениями из указанного массива.
Initialize()Заполняет массив объектами типа T, созданными по умолчанию.
Insert(int, const T&) overrideНе поддерживается, поскольку массив, представляемый текущим объектом, доступен только для чтения.
static LastIndexOf(const ArrayPtr<ArrayType>&, const ValueType&, int, int)Определяет индекс последнего вхождения указанного элемента в диапазоне элементов массива, заданного начальным индексом и количеством элементов в диапазоне.
static LastIndexOf(const ArrayPtr<ArrayType>&, const ValueType&, int)Определяет индекс последнего вхождения указанного элемента в массиве, начиная с указанного индекса.
static LastIndexOf(const ArrayPtr<ArrayType>&, const ValueType&)Определяет индекс последнего вхождения указанного элемента в массиве.
Max() constНаходит наибольший элемент в массиве, используя operator<() для сравнения элементов.
Min() constНаходит наименьший элемент в массиве, используя operator<() для сравнения элементов.
operator[](int)Возвращает элемент по указанному индексу.
operator[](int) constВозвращает элемент по указанному индексу.
rbegin()Возвращает обратный итератор к первому элементу перевёрнутого контейнера. Он соответствует последнему элементу неперевёрнутого контейнера. Если контейнер пуст, возвращённый итератор равен rend().
rbegin() constВозвращает обратный итератор к первому элементу перевёрнутого контейнера. Он соответствует последнему элементу неперевёрнутого контейнера. Если контейнер пуст, возвращённый итератор равен rend().
Remove(const T&) overrideНе поддерживается, поскольку массив, представляемый текущим объектом, доступен только для чтения.
RemoveAt(int) overrideНе поддерживается, поскольку массив, представляемый текущим объектом, доступен только для чтения.
rend()Возвращает обратный итератор на элемент, следующий за последним элементом обратного контейнера. Он соответствует элементу, предшествующему первому элементу обычного контейнера. Этот элемент служит заполнительным; попытка доступа к нему приводит к неопределённому поведению.
rend() constВозвращает обратный итератор на элемент, следующий за последним элементом обратного контейнера. Он соответствует элементу, предшествующему первому элементу обычного контейнера. Этот элемент служит заполнительным; попытка доступа к нему приводит к неопределённому поведению.
static Resize(ArrayPtr<Type>&, int)Изменяет размер указанного массива до заданного значения или создает новый массив с указанным размером.
static Reverse(const ArrayPtr<Type>&)Разворачивает элементы в указанном массиве.
static Reverse(const ArrayPtr<Type>&, int, int)Разворачивает диапазон элементов в указанном массиве.
SetTemplateWeakPtr(uint32_t) overrideЗаставляет массив рассматривать хранимые указатели как слабые (если применимо).
SetValue(const T&, int)Устанавливает значение элемента по указанному индексу.
static Sort(const ArrayPtr<Type>&)Сортирует элементы в указанном массиве, используя сравниватель по умолчанию.
static Sort(const ArrayPtr<Type>&, int, int)Сортирует диапазон элементов в указанном массиве, используя сравниватель по умолчанию.
static Sort(const ArrayPtr<Type>&, const SharedPtr<System::Collections::Generic::IComparer<T>>&)Сортирует элементы в указанном массиве, используя указанный сравниватель.
static Sort(const ArrayPtr<Type>&, const SharedPtr<System::Collections::Generic::IComparer<Y>>&)НЕ РЕАЛИЗОВАНО.
static Sort(const ArrayPtr<TKey>&, const ArrayPtr<TValue>&)Сортирует два массива: один, содержащий ключи, а другой — соответствующие элементы, основываясь на значениях массива, содержащего ключи, элементы которого сравниваются с помощью operator<.
static Sort(const ArrayPtr<TKey>&, const ArrayPtr<TValue>&, int, int)Сортирует два массива: один, содержащий ключи, а другой — соответствующие элементы, основываясь на значениях массива, содержащего ключи, элементы которого сравниваются с помощью сравнивателя по умолчанию.
static TrueForAll(System::ArrayPtr<T>, System::Predicate<T>)Определяет, удовлетворяют ли все элементы в указанном массиве условиям, определённым указанным предикатом.
virtualizeBeginConstIterator() const overrideПолучает реализацию константного итератора begin для текущего контейнера.
virtualizeBeginIterator() overrideПолучает реализацию итератора begin для текущего контейнера.
virtualizeEndConstIterator() const overrideПолучает реализацию константного итератора end для текущего контейнера.
virtualizeEndIterator() overrideПолучает реализацию итератора end для текущего контейнера.

Typedefs

Определение типаОписание
const_iteratorТип константного итератора.
const_reverse_iteratorТип константного обратного итератора.
EnumerablePtrПсевдоним для типа умного указателя, указывающего на объект IEnumerable, содержащий элементы типа T.
EnumeratorPtrПсевдоним для типа умного указателя, указывающего на объект IEnumerator, содержащий элементы типа T.
iteratorТип итератора.
reverse_iteratorТип обратного итератора.
UnderlyingTypeПсевдоним типа, используемого для представления каждого элемента массива.
ValueTypeПсевдоним типа элементов массива.

Примечания

#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
*/

См. также