- FreeMode
- FreeMode
- Reserve
- Resize
- Clear
- Shutdown
- CreateElement
- Add
- AddArray
- Insert
- InsertArray
- AssignArray
- Update
- Shift
- Detach
- Delete
- DeleteRange
- At
- CompareArray
- InsertSort
- Search
- SearchGreat
- SearchLess
- SearchGreatOrEqual
- SearchLessOrEqual
- SearchFirst
- SearchLast
- Save
- Load
- Type
CArrayObj
Класс CArrayObj является классом динамического массива указателей на экземпляры класса CObject и его наследников.
Описание
Класс CArrayObj обеспечивает возможность работы с динамическим массивом указателей на экземпляры класса CObject и его наследников. Это дает возможность работы как с многомерными динамическими массивами примитивных типов данных, так и с более сложно организованными структурами данных.
В классе реализованы возможности добавления/вставки/удаления элементов массива, сортировки массива, поисков в сортированном массиве. Кроме того, реализованы методы работы с файлом.
Существуют определенные тонкости работы с классом CArrayObj.
Декларация
class CArrayObj : public CArray |
Заголовок
#include <Arrays\ArrayObj.mqh> |
Иерархия наследованияCArrayObj Прямые потомки |
Методы класса по группам
Атрибуты |
|
---|---|
Получает флаг управления памятью |
|
Устанавливает флаг управления памятью |
|
Управление памятью |
|
Резервирует память для увеличения размеров массива |
|
Устанавливает новый (меньший) размер массива |
|
Очищает массив с полным освобождением памяти массива (но не элементов). |
|
Создание нового элемента |
|
virtual CreateElement |
Создает новый элемент массива в указанной позиции. |
Наполнение |
|
Добавляет элемент в конец массива |
|
Добавляет в конец массива элементы из другого массива |
|
Вставляет элемент в массив в указанную позицию |
|
Вставляет в массив элементы из другого массива с указанной позиции |
|
Копирует в массив элементы из другого массива |
|
Изменение |
|
Изменяет элемент в указанной позиции массива |
|
Перемещает элемент из указанной позиции массива на указанное смещение |
|
Удаление |
|
Получает элемент из указанной позиции с удалением его из массива |
|
Удаляет элемент из указанной позиции массива |
|
Удаляет группу элементов из указанной позиции массива |
|
Удаляет все элементы массива без освобождения памяти массива |
|
Доступ |
|
Получает элемент из указанной позиции массива |
|
Сравнение |
|
Сравнивает массив с другим массивом |
|
Операции с сортированным массивом |
|
Вставляет элемент в сортированный массив |
|
Ищет элемент равный образцу в сортированном массиве |
|
Ищет элемент больше образца в сортированном массиве |
|
Ищет элемент меньше образца в сортированном массиве |
|
Ищет элемент больше или равный образцу в сортированном массиве |
|
Ищет элемент меньше или равный образцу в сортированном массиве |
|
Ищет первый элемент равный образцу в сортированном массиве |
|
Ищет последний элемент равный образцу в сортированном массиве |
|
Ввод/вывод |
|
virtual Save |
Сохраняет данные массива в файле |
virtual Load |
Загружает данные массива из файла |
virtual Type |
Получает идентификатор типа массива |
Методы унаследованные от CObject Prev, Prev, Next, Next, Compare |
---|
Методы унаследованные от CArray Step, Step, Total, Available, Max, IsSorted, SortMode, Clear, Sort |
Практическое применение имеют массивы потомков класса CObject (в том числе все классы стандартной библиотеки).
Для примера рассмотрим вариант реализации двухмерного массива:
#include <Arrays\ArrayDouble.mqh>
|
Тонкости работы
В классе реализован механизм управления динамической памятью, поэтому нужно быть очень внимательным при работе с элементами массива.
Механизм управления памятью можно включать/отключать при помощи метода FreeMode(bool). По умолчанию механизм включен.
Соответственно, есть два варианта работы с классом CArrayObj:
1. Механизм управления памятью включен. (по умолчанию)
В этом случае, CArrayObj берет на себя ответственность за освобождение памяти элементов после их удаления из массива. При этом программа пользователя не должна освобождать элементы массива.
Пример использования:
int i;
|
2. Механизм управления памятью выключен.
В этом случае, CArrayObj не отвечает за освобождение памяти элементов после их удаления из массива. При этом программа пользователя должна освобождать элементы массива.
Пример использования:
int i;
|