PIP 5.9.0
Platform-Independent Primitives
Загрузка...
Поиск...
Не найдено
Шаблон класса PIStack< T >

Класс контейнера наследованый от PIVector с функциональностью стека. Подробнее...

#include <pistack.h>

Граф наследования:PIStack< T >:

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

 PIStack ()
 Создает пустой массив.
PIVector< T > & push (const T &v)
 Кладёт элемент в стек.
PIVector< T > & push (T &&v)
 Перемещает элемент в стек.
T pop ()
 Забирает и возвращает элемент из стека.
T & top ()
 Верхний элемент стека.
PIVector< T > toVector () const
 Преобразует PIStack в PIVector.
PIDeque< T > toDeque () const
 Преобразует PIStack в PIDeque.
Открытые члены унаследованные от PIVector< T >
 PIVector ()
 Создает пустой массив.
 PIVector (const T *data, size_t size)
 Создает массив из указателя на данные data и размер size. То есть выделяет память для size элементов и копирует данные из указателя data.
 PIVector (const PIVector< T > &v)
 Копирующий конструктор.
 PIVector (std::initializer_list< T > init_list)
 Создает массив из списка инициализации C++11.
 PIVector (size_t size, const T &e=T())
 Создает массив из size элементов заполненных e.
 PIVector (size_t size, std::function< T(size_t i)> f)
 Создает массив из size элементов созданных функцией f(size_t i).
 PIVector (PIVector< T > &&v)
 Перемещающий конструктор.
PIVector< T > & operator= (const PIVector< T > &v)
 Оператор присваивания.
PIVector< T > & operator= (PIVector< T > &&v)
 Оператор перемещающего присваивания.
iterator begin ()
 Итератор на первый элемент.
iterator end ()
 Итератор на элемент, следующий за последним элементом.
reverse_iterator rbegin ()
 Обратный итератор на первый элемент.
reverse_iterator rend ()
 Обратный итератор на элемент, следующий за последним элементом.
size_t size () const
 Количество элементов массива.
ssize_t size_s () const
 Количество элементов массива в виде знакового числа.
size_t length () const
 Синоним size().
size_t capacity () const
 Количество элементов, для которого сейчас выделена память массивом.
bool isEmpty () const
 Проверяет пуст ли массив.
bool isNotEmpty () const
 Проверяет не пуст ли массив.
bool any (std::function< bool(const T &e)> test) const
 Проверяет, удовлетворяет ли какой-либо элемент массива условию, заданному в передаваемой функции test.
bool every (std::function< bool(const T &e)> test) const
 Проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции test.
T & operator[] (size_t index)
 Полный доступ к элементу по индексу index.
const T & at (size_t index) const
 Доступ исключительно на чтение к элементу по индексу index.
const T & atWhere (std::function< bool(const T &e)> test, ssize_t start=0, const T &def=T()) const
 Возвращает первый элемент массива, проходящего по условию, заданному в передаваемой функции test, или def если такого элемента нет.
const T & lastAtWhere (std::function< bool(const T &e)> test, ssize_t start=-1, const T &def=T()) const
 Возвращает последний элемент массива, проходящего по условию, заданному в передаваемой функции test, или def если такого элемента нет.
T & back ()
 Последний элемент массива.
T & front ()
 Первый элемент массива.
bool operator== (const PIVector< T > &v) const
 Оператор сравнения с массивом v.
bool operator!= (const PIVector< T > &v) const
 Оператор сравнения с массивом v.
bool contains (const T &e, ssize_t start=0) const
 Проверяет наличие элемента e в массиве.
bool containsAll (const PIVector< T > &v, ssize_t start=0) const
 Проверяет наличие всех элементов v в массиве.
bool containsAny (const PIVector< T > &v, ssize_t start=0) const
 Проверяет наличие хотя бы одного из элементов v в массиве.
int entries (const T &e, ssize_t start=0) const
 Подсчитывает количество элементов, совпадающих с элементом e в массиве.
int entries (std::function< bool(const T &e)> test, ssize_t start=0) const
 Подсчитывает количество элементов в массиве, проходящих по условию, заданному в передаваемой функции test.
ssize_t indexOf (const T &e, ssize_t start=0) const
 Возвращает первый индекс, по которому данный элемент e может быть найден в массиве или -1, если такого индекса нет.
ssize_t indexWhere (std::function< bool(const T &e)> test, ssize_t start=0) const
 Возвращает первый индекс элемента проходящего по условию, заданному в передаваемой функции test, или -1, если таких элементов нет.
ssize_t lastIndexOf (const T &e, ssize_t start=-1) const
 Возвращает последний индекс, по которому данный элемент e может быть найден в массиве или -1, если такого индекса нет.
ssize_t lastIndexWhere (std::function< bool(const T &e)> test, ssize_t start=-1) const
 Возвращает последний индекс элемента проходящего по условию, заданному в передаваемой функции test, или -1, если таких элементов нет.
T * data (size_t index=0)
 Указатель на память массива
const T * data (size_t index=0) const
 Указатель на память массива только для чтения.
PIVector< T > getRange (size_t index, size_t count) const
 Создает подмассив, то есть кусок из текущего массива.
template<typename T1 = T, typename std::enable_if<!std::is_trivially_copyable< T1 >::value, int >::type = 0>
PIVector< T > & clear ()
 Очищает массив, удаляет все элементы.
PIVector< T > & fill (const T &e=T())
 Заполняет весь массив копиями элемента 'e'.
PIVector< T > & fill (std::function< T(size_t i)> f)
 Заполняет весь массив результатом вызова функции 'f(size_t i)'.
PIVector< T > & assign (const T &e=T())
 Тоже самое что и fill().
template<typename T1 = T, typename std::enable_if<!std::is_trivially_copyable< T1 >::value, int >::type = 0>
PIVector< T > & assign (size_t new_size, const T &f)
 Сначала делает resize(new_size), затем fill(e).
PIVector< T > & resize (size_t new_size, const T &e=T())
 Устанавливает размер массива, новые элементы копируются из e.
PIVector< T > & resize (size_t new_size, std::function< T(size_t i)> f)
 Устанавливает размер массива, новые элементы создаются функцией f(size_t i).
PIVector< T > & reserve (size_t new_size)
 Резервируется память под как минимум new_size элементов.
PIVector< T > & insert (size_t index, const T &e=T(), size_t count=1)
 Вставляет значение e в позицию index в массиве.
PIVector< T > & insert (size_t index, T &&e)
 Вставляет значение e в позицию index в массиве.
PIVector< T > & insert (size_t index, const PIVector< T > &v)
 Вставляет массив v в позицию index в массиве.
PIVector< T > & insert (size_t index, std::initializer_list< T > init_list)
 Вставляет элементы в позицию index в массиве.
PIVector< T > & remove (size_t index, size_t count=1)
 Удаляет элементы из массива, начиная с позиции index в количестве count.
void swap (PIVector< T > &v)
 Меняет местами массив v с этим массивом.
PIVector< T > & sort ()
 Сортировка элементов в порядке возрастания.
PIVector< T > & sort (std::function< bool(const T &a, const T &b)> comp)
 Сортировка элементов в порядке возрастания.
PIVector< T > & reverse ()
 Обращает порядок следования элементов этого массива.
PIVector< T > reversed () const
 Возвращает перевернутый массив.
PIVector< T > & enlarge (ssize_t add_size, const T &e=T())
 Увеличивает или уменьшает размер массива на add_size элементов.
PIVector< T > & removeOne (const T &e)
 Удаляет первый элемент, который равен элементу e.
PIVector< T > & removeAll (const T &e)
 Удаляет все элементы, равные элементу e.
PIVector< T > & removeWhere (std::function< bool(const T &e)> test)
 Удаляет все элементы, удовлетворяющие условию, заданному в передаваемой функции test.
PIVector< T > & push_back (const T &e)
 Добавляет элемент e в конец массива.
PIVector< T > & push_back (T &&e)
 Добавляет элемент e в конец массива.
PIVector< T > & push_back (std::initializer_list< T > init_list)
 Добавляет элементы в конец массива.
PIVector< T > & push_back (const PIVector< T > &v)
 Добавляет массив v в конец массива.
PIVector< T > & append (const T &e)
 Добавляет элемент e в конец массива.
PIVector< T > & append (T &&e)
 Добавляет элемент e в конец массива.
PIVector< T > & append (std::initializer_list< T > init_list)
 Добавляет элементы в конец массива.
PIVector< T > & append (const PIVector< T > &v)
 Добавляет массив v в конец массива.
PIVector< T > & operator<< (const T &e)
 Добавляет элемент e в конец массива.
PIVector< T > & operator<< (T &&e)
 Добавляет элемент e в конец массива.
PIVector< T > & operator<< (const PIVector< T > &v)
 Добавляет массив v в конец массива.
PIVector< T > & push_front (const T &e)
 Добавляет элемент e в начало массива.
PIVector< T > & push_front (T &&e)
 Добавляет элемент e в начало массива.
PIVector< T > & push_front (const PIVector< T > &v)
 Добавляет массив v в начало массива.
PIVector< T > & push_front (std::initializer_list< T > init_list)
 Добавляет элементы в начало массива.
PIVector< T > & prepend (const T &e)
 Добавляет элемент e в начало массива.
PIVector< T > & prepend (T &&e)
 Добавляет элемент e в начало массива.
PIVector< T > & prepend (const PIVector< T > &v)
 Добавляет массив v в начало массива.
PIVector< T > & prepend (std::initializer_list< T > init_list)
 Добавляет элементы в начало массива.
PIVector< T > & pop_back ()
 Удаляет один элемент с конца массива.
PIVector< T > & pop_front ()
 Удаляет один элемент с начала массива.
T take_back ()
 Удаляет один элемент с начала массива и возвращает его.
T take_front ()
 Удаляет один элемент с конца массива и возвращает его.
template<typename ST>
PIVector< ST > toType () const
 Возвращает конвертированный в другой тип массив.
PIVector< T > filter (std::function< bool(const T &e)> test) const
 Возвращает новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции bool test(const T & e).
PIVector< T > filterIndexed (std::function< bool(size_t index, const T &e)> test) const
 Аналогично filter() но с параметром индекса index в функции test.
PIVector< T > filterReverse (std::function< bool(const T &e)> test) const
 Аналогично filter() но от конца до начала (справа на лево).
PIVector< T > filterReverseIndexed (std::function< bool(size_t index, const T &e)> test) const
 Аналогично filterReverse() но с параметром индекса index в функции test.
void forEach (std::function< void(const T &e)> f) const
 Выполняет функцию void f(const T & e) для каждого элемента массива.
PIVector< T > & forEach (std::function< void(T &e)> f)
 Выполняет функцию void f(T & e) для каждого элемента массива.
void forEachIndexed (std::function< void(size_t index, const T &e)> f) const
 Аналогично forEach() но с параметром индекса index в функции f.
PIVector< T > & forEachIndexed (std::function< void(size_t index, T &e)> f)
 Аналогично forEachIndexed(), но позволяет изменять элементы массива.
void forEachReverse (std::function< void(const T &e)> f) const
 Аналогично forEach() но от конца до начала (справа на лево).
PIVector< T > & forEachReverse (std::function< void(T &e)> f)
 Аналогично forEachReverse(), но позволяет изменять элементы массива.
void forEachReverseIndexed (std::function< void(size_t index, const T &e)> f) const
 Аналогично forEachIndexed() но от конца до начала (справа на лево).
PIVector< T > & forEachReverseIndexed (std::function< void(size_t index, T &e)> f)
 Аналогично forEachReverseIndexed(), но позволяет изменять элементы массива.
template<typename ST>
PIVector< ST > map (std::function< ST(const T &e)> f) const
 Создаёт новый массив с результатом вызова указанной функции ST f(const T & e) для каждого элемента массива.
template<typename ST>
PIVector< ST > mapIndexed (std::function< ST(size_t index, const T &e)> f) const
 Аналогично map() но с параметром индекса index в функции f.
template<typename ST>
PIVector< ST > mapReverse (std::function< ST(const T &e)> f) const
 Аналогично map() но от конца до начала (справа на лево).
template<typename ST>
PIVector< ST > mapReverseIndexed (std::function< ST(size_t index, const T &e)> f) const
 Аналогично mapReverse() но с параметром индекса index в функции f.
template<typename ST>
ST reduce (std::function< ST(const T &e, const ST &acc)> f, const ST &initial=ST()) const
 Применяет функцию ST f(const T & e, const ST & acc) к каждому элементу массива (слева-направо), возвращает одно значение.
template<typename ST>
ST reduceIndexed (std::function< ST(size_t index, const T &e, const ST &acc)> f, const ST &initial=ST()) const
 Аналогично reduce() но с параметром индекса index в функции f.
template<typename ST>
ST reduceReverse (std::function< ST(const T &e, const ST &acc)> f, const ST &initial=ST()) const
 Аналогично reduce() но от конца до начала (справа на лево).
template<typename ST>
ST reduceReverseIndexed (std::function< ST(size_t index, const T &e, const ST &acc)> f, const ST &initial=ST()) const
 Аналогично reduceReverse() но с параметром индекса index в функции f.
PIVector< PIVector< T > > reshape (size_t rows, size_t cols, ReshapeOrder order=ReshapeByRow) const
 Изменяет размерность массива, из одномерного массива создает двухмерный.
template<typename C, typename std::enable_if< std::is_same< T, PIVector< C > >::value, int >::type = 0>
PIVector< C > flatten (ReshapeOrder order=ReshapeByRow) const
 Изменяет размерность массива, из двухмерный массива создает одномерный.
template<typename C, typename std::enable_if< std::is_same< T, PIVector< C > >::value, int >::type = 0>
PIVector< PIVector< C > > reshape (size_t rows, size_t cols, ReshapeOrder order=ReshapeByRow) const
 Изменяет размерность двухмерного массива.
PIVector< PIVector< T > > split (const T &separator) const
 Разделяет массив на двумерный массив с помощью разделителяseparator.
PIVector< PIVector< T > > splitBySize (size_t sz) const
 Разделяет массив на двумерный массив по кускам не более чем sz.
PIVector< T > takeRange (size_t index, size_t count)
 Вырезает подмассив, то есть кусок из текущего массива.

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

template<typename T>
class PIStack< T >

Класс контейнера наследованый от PIVector с функциональностью стека.

Контейнер представляющий массив элементов, организованных по принципу LIFO (последним пришёл — первым вышел). Добавляет к PIVector функции push() и pop().

См. также
PIVector

Методы

◆ pop()

template<typename T>
T PIStack< T >::pop ( )
inline

Забирает и возвращает элемент из стека.

Заметки
Эта функция предполагает, что массив не пустой. Иначе это приведёт к неопределённому поведению программы и ошибкам памяти.

◆ top()

template<typename T>
T & PIStack< T >::top ( )
inline

Верхний элемент стека.

Заметки
Возвращает ссылку на верхний элемент стека. Эта функция предполагает, что массив не пустой. Иначе это приведёт к неопределённому поведению программы и ошибкам памяти.