C3D Toolkit  Kernel - 108159, Vision - 191105.108159

Массив простых структур данных. Подробнее...

#include <templ_s_array.h>

+ Граф наследования:SArray< Type >:

Открытые типы

typedef int(* CompFunc) (const Type *, const Type *)
 Шаблон функции сортировки.
 

Открытые члены

 SArray (size_t i_max=0, uint16 i_delta=1)
 Конструктор.
 
 SArray (const SArray< Type > &)
 Конструктор копирования.
 
 SArray (const std::vector< Type > &)
 Конструктор копирования.
 
virtual ~SArray ()
 Деструктор.
 
size_t Upper () const
 Количество элементов, под которое зарезервирована память.
 
uint16 Delta () const
 Получить приращение по количеству элементов при выделении дополнительной памяти.
 
void Delta (uint16 newDelta)
 Установить приращение по количеству элементов при выделении дополнительной памяти (1 - автоприращение).
 
void SetMaxDelta (uint16 newDelta)
 Установить максимальное из приращений.
 
bool SetSize (size_t newSize, bool clear)
 Функции, выделяющие потенциально большие участки памяти, возвращают результат операции (успех/ошибка). Подробнее...
 
bool Reserve (size_t n, bool addAdditionalSpace=true)
 Зарезервировать место под столько элементов.
 
void Flush ()
 Обнулить количество элементов.
 
void HardFlush ()
 Освободить всю память.
 
void Adjust ()
 Удалить лишнюю память.
 
Type * Add ()
 Добавить элемент в конец массива.
 
Type * AddItems (size_t n)
 Добавить n элементов в конец массива.
 
Type * Add (const Type &)
 Добавить элемент в конец массива.
 
Type * AddAt (const Type &ent, size_t index)
 Вставить элемент по индексу.
 
Type * AddAfter (const Type &, size_t index)
 Добавить элемент после указанного.
 
Type * InsertObj (const Type &index, const Type &ent)
 Вставить элемент перед указанным.
 
Type * InsertInd (size_t index, const Type &)
 Вставить элемент перед указанным.
 
Type * InsertInd (size_t index)
 Вставить пустой элемент перед указанным.
 
void Remove (Type *firstItr, Type *lastItr)
 Удалить элементы из массива начиная с позиции firstItr до lastItr-1 включительно.
 
void RemoveInd (size_t firstIdx, size_t lastIdx)
 Удалить элементы из массива начиная с индекса firstIdx до lastIdx-1 включительно.
 
void RemoveInd (size_t idx)
 Удалить элемент из массива по индексу.
 
size_t RemoveObj (const Type &delObject)
 Удалить элемент из массива.
 
bool Fill (size_t fillCount, const Type &fillData)
 Заполнить массив значениями.
 
bool FillZero (size_t fillCount, size_t startIndex=0)
 Заполнить массив байтами содержащими 0.
 
size_t FindIt (const Type &) const
 Вернуть индекс элемента в массиве.
 
bool IsExist (const Type &) const
 true если элемент найден.
 
size_t Count () const
 Дать количество элементов массива.
 
ptrdiff_t MaxIndex () const
 Дать количество элементов массива.
 
bool SetCArray (const Type *o, size_t count)
 Присвоить значения из c-массива.
 
void Swap (SArray &arr)
 Обменять местами данные массивов.
 
SArray< Type > & operator= (const SArray< Type > &)
 Оператор присваивания.
 
SArray< Type > & operator= (const std::vector< Type > &)
 Оператор присваивания.
 
SArray< Type > & operator+= (const SArray< Type > &)
 Оператор слияния.
 
SArray< Type > & operator+= (const std::vector< Type > &)
 Оператор слияния.
 
bool operator== (const SArray< Type > &w) const
 Оператор равенства.
 
Type & operator[] (size_t loc) const
 Оператор доступа по индексу.
 
void Sort (CompFunc comp=CompareSArrayItems< Type >)
 Сортировать массив. По умолчанию сортирует в порядке возрастания.
 
const Type * GetAddr () const
 Выдать адрес начала массива.
 
const Type * GetEndAddr () const
 Выдать указатель конца (следующим за крайним).
 
\~russian Унификация с контейнерами STL.
bool empty () const
 Проверить не пустой ли массив (т.е. не равен ли его размер 0).
 
size_t size () const
 Дать количество элементов массива.
 
void reserve (size_t n)
 Зарезервировать место под столько элементов.
 
void resize (size_t n, Type val=Type())
 Изменить размер массива.
 
size_t capacity () const
 Под какое количество элементов выделена память?
 
void push_back (const Type &e)
 Добавить элемент в конец массива.
 
void pop_back ()
 Удалить элемент из конца массива.
 
template<class Iterator >
void insert (Iterator pos, const Type &e)
 Вставить элемент перед указанным.
 
template<class Iterator >
void erase (Iterator pos)
 Удалить элемент из массива по индексу.
 
template<class Iterator >
void erase (Iterator first, Iterator last)
 Удалить элементы из массива начиная с индекса first до last-1 включительно.
 
void clear ()
 Обнулить количество элементов.
 
void shrink_to_fit ()
 Удалить лишнюю память.
 
template<class Iterator >
void assign (Iterator first, Iterator last)
 Присвоить массиву новое содержимое, заменив его текущее содержимое.
 
void assign (size_t n, const Type &val)
 Присвоить массиву новое содержимое, заменив его текущее содержимое.
 
const Type * begin () const
 Получить указатель на первый элемент массива.
 
Type * begin ()
 Получить указатель на первый элемент массива.
 
const Type * end () const
 Получить указатель на участок памяти после массива.
 
Type * end ()
 Получить указатель на участок памяти после массива.
 
const Type * cbegin () const
 Получить указатель на первый элемент массива.
 
const Type * cend () const
 Получить указатель на участок памяти после массива.
 
const Type & front () const
 
Type & front ()
 
const Type & back () const
 
Type & back ()
 

Защищенные члены

bool CatchMemory ()
 Захватить память.
 
bool AddMemory (size_t n)
 Обеспечить место под n элементов, независимо от AutoDelta.
 
size_t AutoDelta () const
 Вычислить автоприращение.
 
TEMPLATE_FRIEND bool set_array_size TEMPLATE_SUFFIX (SArray< Type > &, size_t newSize, bool clear)
 Перезахватить память.
 
TEMPLATE_FRIEND Type *add_n_to_array TEMPLATE_SUFFIX (SArray< Type > &, size_t n)
 Добавить памяти под n элментов массива и вернуть указатель на начало выделеного участка памяти.
 
TEMPLATE_FRIEND size_t find_in_array TEMPLATE_SUFFIX (const SArray< Type > &, const Type &object)
 Найти элемент в массиве.
 
TEMPLATE_FRIEND bool fill_array TEMPLATE_SUFFIX (SArray< Type > &, size_t fillCount, const Type &fillData)
 Заполнить fillCount элементов массива копиями объекта fillData.
 
TEMPLATE_FRIEND bool fill_array_zero TEMPLATE_SUFFIX (SArray< Type > &, size_t fillCount, size_t startIndex)
 Заполнить fillCount элементов массива нулями.
 
TEMPLATE_FRIEND reader &CALL_DECLARATION operator>> TEMPLATE_SUFFIX (reader &in, SArray< Type > &ref)
 Оператор чтения.
 
TEMPLATE_FRIEND writer &CALL_DECLARATION operator<< TEMPLATE_SUFFIX (writer &out, const SArray< Type > &ref)
 Оператор записи.
 
TEMPLATE_FRIEND reader &CALL_DECLARATION operator>> TEMPLATE_SUFFIX (reader &in, SArray< Type > *&ptr)
 Оператор чтения.
 
TEMPLATE_FRIEND writer &CALL_DECLARATION operator<< TEMPLATE_SUFFIX (writer &out, const SArray< Type > *ptr)
 Оператор записи.
 

Защищенные данные

size_t count
 Количество элементов в массиве.
 
size_t upper
 Под какое количество элементов выделена память.
 
uint16 delta
 Приращение по количеству элементов при выделении дополнительной памяти.
 

Подробное описание

template<class Type>
class SArray< Type >

Массив простых структур данных.

Шаблонный массив, работающий только с простыми (POD) данными, которые могут копироваться или перемещаться в памяти методом memcpy без нарушения целостности объекта. Например, в массиве нельзя хранить объекты, динамически выделяющие память или классы с указателями, а также классы с виртуальными функциями.

Методы

◆ SetSize()

template<class Type >
bool SArray< Type >::SetSize ( size_t  newSize,
bool  clear 
)
inline

Функции, выделяющие потенциально большие участки памяти, возвращают результат операции (успех/ошибка).

Установить новый размер массива.


Объявления и описания членов классов находятся в файлах: