Класс 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Возвращает итератор на первый константный элемент контейнера. Если контейнер пуст, возвращённый итератор будет равен 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 с помощью указанного объектa функции‑преобразователя.
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
*/

См. также