![]() |
PIP 5.5.3
Platform-Independent Primitives
|
Последовательный двухсторонний контейнер с линейной памятью - динамический массив любого типа. Подробнее...
#include <pideque.h>
Открытые члены | |
| PIDeque () | |
| Создает пустой массив. | |
| PIDeque (const PIDeque< T > &other) | |
| Копирующий конструктор. | |
| PIDeque (std::initializer_list< T > init_list) | |
| Создает массив из списка инициализации C++11. Подробнее... | |
| PIDeque (const T *data, size_t size) | |
Создает массив из указателя на данные data и размер size. То есть выделяет память для size элементов и копирует данные из указателя data. | |
| PIDeque (size_t pid_size, const T &e=T()) | |
Создает массив из size элементов заполненных e. | |
| PIDeque (size_t piv_size, std::function< T(size_t i)> f) | |
Создает массив из size элементов созданных функцией f(size_t i). Подробнее... | |
| PIDeque (PIDeque< T > &&other) | |
| Перемещающий конструктор. | |
| PIDeque< T > & | operator= (const PIDeque< T > &other) |
| Оператор присваивания. | |
| PIDeque< T > & | operator= (PIDeque< T > &&other) |
| Оператор перемещающего присваивания. | |
| 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 PIDeque< T > &v) const |
Оператор сравнения с массивом v. | |
| bool | operator!= (const PIDeque< T > &v) const |
Оператор сравнения с массивом v. | |
| bool | contains (const T &e, ssize_t start=0) const |
Проверяет наличие элемента e в массиве. Подробнее... | |
| bool | contains (const PIDeque< 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 |
| Указатель на память массива только для чтения. Подробнее... | |
| PIDeque< 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> | |
| PIDeque< T > & | clear () |
| Очищает массив, удаляет все элементы. Подробнее... | |
| PIDeque< T > & | fill (const T &e=T()) |
| Заполняет весь массив копиями элемента 'e'. Подробнее... | |
| PIDeque< T > & | fill (std::function< T(size_t i)> f) |
| Заполняет весь массив результатом вызова функции 'f(size_t i)'. Подробнее... | |
| PIDeque< T > & | assign (const T &e=T()) |
| Тоже самое что и fill(). Подробнее... | |
| template<typename T1 = T, typename std::enable_if<!std::is_trivially_copyable< T1 >::value, int >::type = 0> | |
| PIDeque< T > & | assign (size_t new_size, const T &e) |
Сначала делает resize(new_size), затем fill(e). Подробнее... | |
| PIDeque< T > & | resize (size_t new_size, const T &e=T()) |
Устанавливает размер массива, новые элементы копируются из e. Подробнее... | |
| PIDeque< T > & | resize (size_t new_size, std::function< T(size_t i)> f) |
Устанавливает размер массива, новые элементы создаются функцией f(size_t i). Подробнее... | |
| PIDeque< T > & | reserve (size_t new_size) |
Резервируется память под как минимум new_size элементов. Подробнее... | |
| PIDeque< T > & | insert (size_t index, const T &e=T()) |
Вставляет значение e в позицию index в массиве. Подробнее... | |
| PIDeque< T > & | insert (size_t index, T &&e) |
Вставляет значение e в позицию index в массиве. Подробнее... | |
| PIDeque< T > & | insert (size_t index, const PIDeque< T > &v) |
Вставляет массив v в позицию index в массиве. Подробнее... | |
| PIDeque< T > & | insert (size_t index, std::initializer_list< T > init_list) |
Вставляет элементы в позицию index в массиве. Подробнее... | |
| PIDeque< T > & | remove (size_t index, size_t count=1) |
Удаляет элементы из массива, начиная с позиции index в количестве count. Подробнее... | |
| void | swap (PIDeque< T > &other) |
Меняет местами массив v с этим массивом. Подробнее... | |
| PIDeque< T > & | sort () |
| Сортировка элементов в порядке возрастания. Подробнее... | |
| PIDeque< T > & | sort (std::function< bool(const T &a, const T &b)> comp) |
| Сортировка элементов в порядке возрастания. Подробнее... | |
| PIDeque< T > & | reverse () |
| Обращает порядок следования элементов этого массива. Подробнее... | |
| PIDeque< T > | reversed () const |
| Возвращает перевернутый массив. Подробнее... | |
| PIDeque< T > & | enlarge (ssize_t add_size, const T &e=T()) |
Увеличивает или уменьшает размер массива на add_size элементов. Подробнее... | |
| PIDeque< T > & | removeOne (const T &e) |
Удаляет первый элемент, который равен элементу e. Подробнее... | |
| PIDeque< T > & | removeAll (const T &e) |
Удаляет все элементы, равные элементу e. Подробнее... | |
| PIDeque< T > & | removeWhere (std::function< bool(const T &e)> test) |
Удаляет все элементы, удовлетворяющие условию, заданному в передаваемой функции test. Подробнее... | |
| PIDeque< T > & | push_back (const T &e) |
Добавляет элемент e в конец массива. Подробнее... | |
| PIDeque< T > & | push_back (T &&e) |
Добавляет элемент e в конец массива. Подробнее... | |
| PIDeque< T > & | push_back (std::initializer_list< T > init_list) |
| Добавляет элементы в конец массива. Подробнее... | |
| PIDeque< T > & | push_back (const PIDeque< T > &v) |
Добавляет массив v в конец массива. Подробнее... | |
| PIDeque< T > & | append (const T &e) |
Добавляет элемент e в конец массива. Подробнее... | |
| PIDeque< T > & | append (T &&e) |
Добавляет элемент e в конец массива. Подробнее... | |
| PIDeque< T > & | append (std::initializer_list< T > init_list) |
| Добавляет элементы в конец массива. Подробнее... | |
| PIDeque< T > & | append (const PIDeque< T > &v) |
Добавляет массив v в конец массива. Подробнее... | |
| PIDeque< T > & | operator<< (const T &e) |
Добавляет элемент e в конец массива. Подробнее... | |
| PIDeque< T > & | operator<< (T &&e) |
Добавляет элемент e в конец массива. Подробнее... | |
| PIDeque< T > & | operator<< (const PIDeque< T > &v) |
Добавляет массив v в конец массива. Подробнее... | |
| PIDeque< T > & | push_front (const T &e) |
Добавляет элемент e в начало массива. Подробнее... | |
| PIDeque< T > & | push_front (T &&e) |
Добавляет элемент e в начало массива. Подробнее... | |
| PIDeque< T > & | push_front (const PIDeque< T > &v) |
Добавляет массив v в начало массива. Подробнее... | |
| PIDeque< T > & | push_front (std::initializer_list< T > init_list) |
| Добавляет элементы в начало массива. Подробнее... | |
| PIDeque< T > & | prepend (const T &e) |
Добавляет элемент e в начало массива. Подробнее... | |
| PIDeque< T > & | prepend (T &&e) |
Добавляет элемент e в начало массива. Подробнее... | |
| PIDeque< T > & | prepend (const PIDeque< T > &v) |
Добавляет массив v в начало массива. Подробнее... | |
| PIDeque< T > & | prepend (std::initializer_list< T > init_list) |
| Добавляет элементы в начало массива. Подробнее... | |
| PIDeque< T > & | pop_back () |
| Удаляет один элемент с конца массива. Подробнее... | |
| PIDeque< T > & | pop_front () |
| Удаляет один элемент с начала массива. Подробнее... | |
| T | take_back () |
| Удаляет один элемент с начала массива и возвращает его. Подробнее... | |
| T | take_front () |
| Удаляет один элемент с конца массива и возвращает его. Подробнее... | |
| template<typename ST > | |
| PIDeque< ST > | toType () const |
| Возвращает конвертированный в другой тип массив. Подробнее... | |
| PIDeque< T > | filter (std::function< bool(const T &e)> test) const |
Возвращает новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции bool test(const T & e). Подробнее... | |
| PIDeque< T > | filterIndexed (std::function< bool(size_t index, const T &e)> test) const |
Аналогично filter() но с параметром индекса index в функции test. Подробнее... | |
| PIDeque< T > | filterReverse (std::function< bool(const T &e)> test) const |
| Аналогично filter() но от конца до начала (справа на лево). Подробнее... | |
| PIDeque< 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) для каждого элемента массива. Подробнее... | |
| PIDeque< 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. Подробнее... | |
| PIDeque< T > & | forEachIndexed (std::function< void(size_t index, T &e)> f) |
| Аналогично forEachIndexed(), но позволяет изменять элементы массива. Подробнее... | |
| void | forEachReverse (std::function< void(const T &e)> f) const |
| Аналогично forEach() но от конца до начала (справа на лево). Подробнее... | |
| PIDeque< T > & | forEachReverse (std::function< void(T &e)> f) |
| Аналогично forEachReverse(), но позволяет изменять элементы массива. Подробнее... | |
| void | forEachReverseIndexed (std::function< void(size_t index, const T &e)> f) const |
| Аналогично forEachIndexed() но от конца до начала (справа на лево). Подробнее... | |
| PIDeque< T > & | forEachReverseIndexed (std::function< void(size_t index, T &e)> f) |
| Аналогично forEachReverseIndexed(), но позволяет изменять элементы массива. Подробнее... | |
| template<typename ST > | |
| PIDeque< ST > | map (std::function< ST(const T &e)> f) const |
Создаёт новый массив с результатом вызова указанной функции ST f(const T & e) для каждого элемента массива. Подробнее... | |
| template<typename ST > | |
| PIDeque< ST > | mapIndexed (std::function< ST(size_t index, const T &e)> f) const |
Аналогично map() но с параметром индекса index в функции f. Подробнее... | |
| template<typename ST > | |
| PIDeque< ST > | mapReverse (std::function< ST(const T &e)> f) const |
| Аналогично map() но от конца до начала (справа на лево). Подробнее... | |
| template<typename ST > | |
| PIDeque< 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. Подробнее... | |
| PIDeque< PIDeque< T > > | reshape (size_t rows, size_t cols, ReshapeOrder order=ReshapeByRow) const |
| Изменяет размерность массива, из одномерного массива создает двухмерный. Подробнее... | |
| template<typename C , typename std::enable_if< std::is_same< T, PIDeque< C > >::value, int >::type = 0> | |
| PIDeque< C > | flatten (ReshapeOrder order=ReshapeByRow) const |
| Изменяет размерность массива, из двухмерный массива создает одномерный. Подробнее... | |
| template<typename C , typename std::enable_if< std::is_same< T, PIDeque< C > >::value, int >::type = 0> | |
| PIDeque< PIDeque< C > > | reshape (size_t rows, size_t cols, ReshapeOrder order=ReshapeByRow) const |
| Изменяет размерность двухмерного массива. Подробнее... | |
| PIDeque< PIDeque< T > > | split (const T &separator) const |
Разделяет массив на двумерный массив с помощью разделителяseparator. Подробнее... | |
| PIDeque< PIDeque< T > > | splitBySize (size_t sz) const |
Разделяет массив на двумерный массив по кускам не более чем sz. Подробнее... | |
| PIDeque< T > | takeRange (size_t index, size_t count) |
| Вырезает подмассив, то есть кусок из текущего массива. Подробнее... | |
Последовательный двухсторонний контейнер с линейной памятью - динамический массив любого типа.
Элементы хранятся непрерывно, а значит доступны не только через итераторы, но и с помощью смещений для обычных указателей на элементы. Это означает, что указатель на элемент PIDeque может передаваться в любую функцию, ожидающую указатель на элемент массива. Добавить элементы можно с помощью функции append() или insert(), а удалить с помощью remove() или removeOne(), removeWhere(). Изменить размер можно функцией resize() или assign(). Массив индексируется с нуля: первый элемент массива имеет индекс, равный 0, а индекс последнего элемента равен size() - 1. Также для массива доступен набор различных удобных функций, например: indexOf(), contains(), entries(), isEmpty(), isNotEmpty(), every(), any(), forEach(), indexWhere(), getRange(), sort(), map(), reduce(), filter(), flatten(), reshape() и другие.
Память PIDeque обрабатывается автоматически, расширяясь по мере необходимости. PIDeque занимает больше места, чем PIVector, поскольку больше памяти выделяется для обработки будущего роста и с начала и с конца. Таким образом, память для PIDeque требуется выделять не при каждой вставке элемента, а только после исчерпания дополнительной памяти. Общий объём выделенной памяти можно получить с помощью функции capacity().
Выделение памяти обычно является дорогостоящей операцией с точки зрения производительности. Функцию reserve() можно использовать для исключения выделения памяти, если количество элементов известно заранее.
Сложность (эффективность) обычных операций над PIDeque следующая:
Создает массив из списка инициализации C++11.
|
inline |
Создает массив из size элементов созданных функцией f(size_t i).
Позволяет передавать Лямбда-выражения для создания элементов в конструкторе.
|
inline |
Итератор на первый элемент.
Если массив - пуст, возвращаемый итератор будет равен end().
|
inline |
Итератор на элемент, следующий за последним элементом.
Этот элемент существует лишь условно, попытка доступа к нему приведёт к выходу за разрешенную память.
|
inline |
Обратный итератор на первый элемент.
Итератор для прохода массива в обратном порядке. Указывает на последний элемент. Если массив пустой, то совпадает с итератором rend().
|
inline |
Обратный итератор на элемент, следующий за последним элементом.
Итератор для прохода массива в обратном порядке. Указывает на элемент, предшествующий первому элементу. Этот элемент существует лишь условно, попытка доступа к нему приведёт к выходу за разрешенную память.
|
inline |
Количество элементов массива.
|
inline |
Количество элементов массива в виде знакового числа.
|
inline |
Синоним size().
|
inline |
|
inline |
|
inline |
|
inline |
Проверяет, удовлетворяет ли какой-либо элемент массива условию, заданному в передаваемой функции test.
|
inline |
Проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции test.
|
inline |
|
inline |
Доступ исключительно на чтение к элементу по индексу index.
Индекс элемента считается от 0. Индекс элемента должен лежать в пределах от 0 до size()-1. Иначе это приведёт к неопределённому поведению программы и ошибкам памяти.
|
inline |
Возвращает первый элемент массива, проходящего по условию, заданному в передаваемой функции test, или def если такого элемента нет.
|
inline |
Возвращает последний элемент массива, проходящего по условию, заданному в передаваемой функции test, или def если такого элемента нет.
|
inline |
Последний элемент массива.
Возвращает ссылку на последний элемент в массиве. Эта функция предполагает, что массив не пустой. Иначе это приведёт к неопределённому поведению программы и ошибкам памяти.
|
inline |
Первый элемент массива.
Возвращает ссылку на пенрвый элемент в массиве. Эта функция предполагает, что массив не пустой. Иначе это приведёт к неопределённому поведению программы и ошибкам памяти.
|
inline |
Проверяет наличие элемента e в массиве.
Опциональный аргумент start указывает на индекс в массиве, откуда будет начинаться поиск. Если индекс больше или равен длине массива, возвращается false, что означает, что массив даже не просматривается. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Если рассчитанный индекс все равно оказывается меньше 0, просматривается весь массив. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от начала к концу (слева на право). Значение по умолчанию равно 0, что означает, что просматривается весь массив.
e присутствует в массиве, в остальных случаях false.
|
inline |
Подсчитывает количество элементов, совпадающих с элементом e в массиве.
Опциональный аргумент start указывает на индекс в массиве, откуда будет начинаться поиск. Если индекс больше или равен длине массива, возвращается 0, что означает, что массив даже не просматривается. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Если рассчитанный индекс все равно оказывается меньше 0, просматривается весь массив. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от начала к концу (слева на право). Значение по умолчанию равно 0, что означает, что просматривается весь массив.
|
inline |
Подсчитывает количество элементов в массиве, проходящих по условию, заданному в передаваемой функции test.
Перегруженная функция. Опциональный аргумент start указывает на индекс в массиве, откуда будет начинаться поиск. Если индекс больше или равен длине массива, возвращается 0, что означает, что массив даже не просматривается. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Если рассчитанный индекс все равно оказывается меньше 0, просматривается весь массив. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от начала к концу (слева на право). Значение по умолчанию равно 0, что означает, что просматривается весь массив.
|
inline |
Возвращает первый индекс, по которому данный элемент e может быть найден в массиве или -1, если такого индекса нет.
Опциональный аргумент start указывает на индекс в массиве, откуда будет начинаться поиск. Если индекс больше или равен длине массива, возвращается -1, что означает, что массив даже не просматривается. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Если рассчитанный индекс все равно оказывается меньше 0, просматривается весь массив. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от начала к концу (слева на право). Значение по умолчанию равно 0, что означает, что просматривается весь массив.
|
inline |
Возвращает первый индекс элемента проходящего по условию, заданному в передаваемой функции test, или -1, если таких элементов нет.
Опциональный аргумент start указывает на индекс в массиве, откуда будет начинаться поиск. Если индекс больше или равен длине массива, возвращается -1, что означает, что массив даже не просматривается. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Если рассчитанный индекс все равно оказывается меньше 0, просматривается весь массив. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от начала к концу (слева на право). Значение по умолчанию равно 0, что означает, что просматривается весь массив.
|
inline |
Возвращает последний индекс, по которому данный элемент e может быть найден в массиве или -1, если такого индекса нет.
Опциональный аргумент start указывает на индекс c которого начинать поиск в обратном направлении. Если индекс больше или равен длине массива, просматривается весь массив. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от конца к началу (справа на лево). Если рассчитанный индекс оказывается меньше 0, массив даже не просматривается. Значение по умолчанию равно -1, что равно индексу последнего элемента и означает, что просматривается весь массив.
|
inline |
Возвращает последний индекс элемента проходящего по условию, заданному в передаваемой функции test, или -1, если таких элементов нет.
Опциональный аргумент start указывает на индекс c которого начинать поиск в обратном направлении. Если индекс больше или равен длине массива, просматривается весь массив. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от конца к началу (справа на лево). Если рассчитанный индекс оказывается меньше 0, массив даже не просматривается. Значение по умолчанию равно -1, что равно индексу последнего элемента и означает, что просматривается весь массив.
|
inline |
Указатель на память массива
Опциональный аргумент index указывает на индекс c которого брать указатель. По умолчанию указывает на начало массива.
|
inline |
Указатель на память массива только для чтения.
Указатель можно использовать для доступа и изменения элементов в массиве. Указатель остается действительным только до тех пор, пока массив не будет перераспределен. Опциональный аргумент index указывает на индекс c которого брать указатель. По умолчанию указывает на начало массива.
|
inline |
Создает подмассив, то есть кусок из текущего массива.
| index | - индекс в текущем массиве, откуда начинётся подмассив |
| count | - размер подмассива |
Индекс начала должен лежать в диапазоне от 0 до size()-1. Если заданный размер подмассива превышает размер текущего массива, то вернется подмассив меньшего размера (size()-index-1).
|
inline |
Очищает массив, удаляет все элементы.
Заполняет весь массив копиями элемента 'e'.
Заполняет весь массив результатом вызова функции 'f(size_t i)'.
|
inline |
|
inline |
Резервируется память под как минимум new_size элементов.
Если вы заранее знаете, насколько велик будет массив, вы можете вызвать эту функцию, чтобы предотвратить перераспределение и фрагментацию памяти. Если размер new_size больше чем выделенная память capacity(), то произойдёт выделение новой памяти и перераспределение массива. Эта функция не изменяет количество элементов в массиве size().
|
inline |
Вставляет значение e в позицию index в массиве.
Индекс должен быть больше 0 и меньше или равен size().
|
inline |
Вставляет элементы в позицию index в массиве.
Индекс должен быть больше или равен 0 и меньше или равен size(). Вставляет элементы из списка инициализации C++11.
Удаляет элементы из массива, начиная с позиции index в количестве count.
Меняет местами массив v с этим массивом.
Эта операция выполняется мгновенно без копирования памяти и никогда не дает сбоев.
Сортировка элементов в порядке возрастания.
Сохранность порядка элементов, имеющих одинаковое значение, не гарантируется. Для сравнения элементов используется оператор operator<. Для сортировки используется функция std::stable_sort. Сложность сортировки O(N·log(N)).
|
inline |
Сортировка элементов в порядке возрастания.
Сохранность порядка элементов, имеющих одинаковое значение, не гарантируется. Для сравнения элементов используется функция сравнения comp. Функция сравнения, возвращает true если первый аргумент меньше второго. Сигнатура функции сравнения должна быть эквивалентна следующей:
Сигнатура не обязана содержать const &, однако, функция не может изменять переданные объекты. Функция обязана возвращать false для одинаковых элементов, иначе это приведёт к неопределённому поведению программы и ошибкам памяти. Для сортировки используется функция std::stable_sort. Сложность сортировки O(N·log(N)).
Обращает порядок следования элементов этого массива.
Метод reverse() на месте переставляет элементы массива, на котором он был вызван, изменяет массив и возвращает ссылку на него. Первый элемент массива становится последним, а последний — первым.
Возвращает перевернутый массив.
Возвращает копию массива с элементами в обратном порядке. Первый элемент массива становится последним, а последний — первым.
|
inline |
Увеличивает или уменьшает размер массива на add_size элементов.
Если add_size > 0, то в конец массива добавляются элементы. Если add_size < 0, то с конца массива удаляются элементы. Если add_size < 0 и в массиве меньше элементов чем указано, то массив становится пустым.
Удаляет первый элемент, который равен элементу e.
Удаляет все элементы, равные элементу e.
|
inline |
Удаляет все элементы, удовлетворяющие условию, заданному в передаваемой функции test.
Добавляет элемент e в конец массива.
Если size() меньше capacity(), что часто бывает, то добавление будет очень быстрым. В любом случае добавление быстрое и не зависит от размера массива. Если новый size() больше, чем capacity(), то все итераторы и указатели становятся нерабочими. В противном случае все, кроме итераторов, указывающих на конец массива, остаются в рабочем состоянии.
|
inline |
Добавляет элементы в конец массива.
Перегруженая функция. Добавляет элементы из списка инициализации C++11.
Добавляет элемент e в конец массива.
Если size() меньше capacity(), что часто бывает, то добавление будет очень быстрым. В любом случае добавление быстрое и не зависит от размера массива. Если новый size() больше, чем capacity(), то все итераторы и указатели становятся нерабочими. В противном случае все, кроме итераторов, указывающих на конец массива, остаются в рабочем состоянии.
|
inline |
Добавляет элементы в конец массива.
Перегруженая функция. Добавляет элементы из списка инициализации C++11.
Добавляет элемент e в конец массива.
Добавляет элемент e в конец массива.
Добавляет массив v в конец массива.
Добавляет элемент e в начало массива.
Если в начале массива имеется свободное место, что часто бывает, то добавление будет очень быстрым. В любом случае добавление быстрое и не зависит от размера массива. Если в начале массива нет свободного места, то все итераторы и указатели становятся нерабочими. В противном случае все, кроме итераторов указывающих, на начало массива, остаются в рабочем состоянии.
|
inline |
Добавляет элементы в начало массива.
Перегруженая функция. Добавляет элементы из списка инициализации C++11.
Добавляет элемент e в начало массива.
Если в начале массива имеется свободное место, что часто бывает, то добавление будет очень быстрым. В любом случае добавление быстрое и не зависит от размера массива. Если в начале массива нет свободного места, то все итераторы и указатели становятся нерабочими. В противном случае все, кроме итераторов указывающих, на начало массива, остаются в рабочем состоянии.
|
inline |
Добавляет элементы в начало массива.
Перегруженая функция. Добавляет элементы из списка инициализации C++11.
Удаляет один элемент с конца массива.
Удаление элемента с конца выполняется очень быстро и не зависит от размера массива.
Удаляет один элемент с начала массива.
Удаление элемента с начала выполняется дольше, чем с конца. Это время прямопропорционально размеру массива. При удалении элемента все итераторы и указатели становятся нерабочими.
|
inline |
Удаляет один элемент с начала массива и возвращает его.
|
inline |
Удаляет один элемент с конца массива и возвращает его.
Возвращает конвертированный в другой тип массив.
|
inline |
Возвращает новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции bool test(const T & e).
|
inline |
Аналогично filterReverse() но с параметром индекса index в функции test.
|
inline |
Выполняет функцию void f(const T & e) для каждого элемента массива.
Не позволяет изменять элементы массива. Для редактирования элементов используйте функцию вида void f(T & e).
|
inline |
|
inline |
Аналогично forEachIndexed(), но позволяет изменять элементы массива.
|
inline |
|
inline |
Аналогично forEachReverse(), но позволяет изменять элементы массива.
|
inline |
Аналогично forEachIndexed() но от конца до начала (справа на лево).
|
inline |
Аналогично forEachReverseIndexed(), но позволяет изменять элементы массива.
|
inline |
Создаёт новый массив с результатом вызова указанной функции ST f(const T & e) для каждого элемента массива.
Метод map вызывает переданную функцию ST f(const T & e) один раз для каждого элемента в порядке их появления от начала к концу (слева на право) и конструирует новый массив из результатов её вызова.
|
inline |
Аналогично map() но с параметром индекса index в функции f.
|
inline |
Аналогично map() но от конца до начала (справа на лево).
|
inline |
Аналогично mapReverse() но с параметром индекса index в функции f.
|
inline |
Применяет функцию ST f(const T & e, const ST & acc) к каждому элементу массива (слева-направо), возвращает одно значение.
Метод reduce() выполняет функцию f один раз для каждого элемента, присутствующего в массиве от начала к концу (слева на право). Если при вызове reduce() передан аргумент initial, то при первом вызове функции f значение acc будет равным значению initial. Если массив пустой то будет возвращено значение initial.
| f | Функция, вида ST f(const T & e, const ST & acc), выполняющаяся для каждого элемента массива. Она принимает два аргумента:
|
| initial | опциональный Объект, используемый в качестве второго аргумента при первом вызове функции f. |
|
inline |
|
inline |
|
inline |
Аналогично reduceReverse() но с параметром индекса index в функции f.
|
inline |
Изменяет размерность массива, из одномерного массива создает двухмерный.
| rows | размер внешнего массива |
| cols | размер внутренних массивов |
| order | порядок обхода исходного массива, задаётся с помощью ReshapeOrder PIDeque<int> v{1, 2, 3, 4};
PIDeque<PIDeque<int>> m1 = v.reshape(2,2);
piCout << m1; // {{1, 2}, {3, 4}}
piCout << m2; // {{1, 3}, {2, 4}}
PIDeque< PIDeque< T > > reshape(size_t rows, size_t cols, ReshapeOrder order=ReshapeByRow) const Изменяет размерность массива, из одномерного массива создает двухмерный. Definition: pideque.h:2398 |
|
inline |
Изменяет размерность массива, из двухмерный массива создает одномерный.
Делает массив плоским. Порядок обхода исходного массива задаётся с помощью ReshapeOrder.
|
inline |
Изменяет размерность двухмерного массива.
| rows | размер внешнего массива |
| cols | размер внутренних массивов |
| order | порядок обхода исходного массива, задаётся с помощью ReshapeOrder PIDeque<int> v{1, 2, 3, 4, 5, 6};
PIDeque<PIDeque<int>> xv = v.reshape(3,2);
piCout << xv; // {{1, 2}, {3, 4}, {5, 6}}
|
|
inline |
Разделяет массив на двумерный массив с помощью разделителяseparator.
Разделяет массив на двумерный массив по кускам не более чем sz.
Вырезает подмассив, то есть кусок из текущего массива.
| index | - индекс в текущем массиве, откуда начинётся подмассив |
| count | - размер подмассива |
Индекс начала должен лежать в диапазоне от 0 до size()-1. Если заданный размер подмассива превышает размер текущего массива, то вернется подмассив меньшего размера (size()-index-1).