|
| | PIVector2D () |
| | Создаёт пустой двумерный массив. Память не выделяется.
|
| | PIVector2D (size_t rows, size_t cols, const T &f=T()) |
| | Создаёт двумерный массив заданного размера, заполненный копиями f.
|
| | PIVector2D (size_t rows, size_t cols, const PIVector< T > &v) |
| | Создаёт двумерный массив из существующего одномерного вектора, изменяя его форму.
|
| | PIVector2D (size_t rows, size_t cols, PIVector< T > &&v) |
| | Конструктор перемещения из существующего одномерного вектора, изменяя его форму.
|
| | PIVector2D (const PIVector< PIVector< T > > &v) |
| | Создаёт двумерный массив из вектора векторов (рваного массива). Предполагается, что все внутренние векторы имеют одинаковый размер.
|
| size_t | rows () const |
| | Возвращает количество строк в двумерном массиве.
|
| size_t | cols () const |
| | Возвращает количество столбцов в двумерном массиве.
|
| size_t | size () const |
| | Возвращает общее количество элементов (строки * столбцы).
|
| ssize_t | size_s () const |
| | Возвращает общее количество элементов в виде знакового числа.
|
| size_t | length () const |
| | Возвращает общее количество элементов (то же, что и size()).
|
| size_t | capacity () const |
| | Возвращает количество элементов, для которого сейчас выделена память во внутреннем контейнере.
|
| bool | isEmpty () const |
| | Проверяет, пуст ли массив.
|
| bool | isNotEmpty () const |
| | Проверяет, не пуст ли массив.
|
| T & | element (size_t row, size_t col) |
| | Возвращает ссылку на элемент по заданной строке и столбцу.
|
|
const T & | element (size_t row, size_t col) const |
| | Возвращает константную ссылку на элемент по заданной строке и столбцу.
|
| const T & | at (size_t row, size_t col) const |
| | Возвращает константную ссылку на элемент по заданной строке и столбцу
|
|
T & | operator[] (const Index &idx) |
| | Возвращает ссылку на элемент по заданному Index.
|
|
const T & | operator[] (const Index &idx) const |
| | Возвращает константную ссылку на элемент по заданному Index.
|
|
T & | element (const Index &idx) |
| | Возвращает ссылку на элемент по заданному Index.
|
|
const T & | element (const Index &idx) const |
| | Возвращает константную ссылку на элемент по заданному Index.
|
|
const T & | at (const Index &idx) const |
| | Возвращает константную ссылку на элемент по заданному Index (проверка границ только в отладочном режиме).
|
| Row | operator[] (size_t index) |
| | Возвращает прокси-объект для строки по заданному индексу для модификации.
|
|
RowConst | operator[] (size_t index) const |
| | Возвращает прокси-объект для строки по заданному индексу только для чтения.
|
| T * | data (size_t index=0) |
| | Возвращает указатель на внутренние плоские данные, начиная с опционального смещения.
|
|
const T * | data (size_t index=0) const |
| | Возвращает константный указатель на внутренние плоские данные, начиная с опционального смещения.
|
| Row | row (size_t index) |
| | Возвращает прокси-объект для строки по заданному индексу для модификации.
|
|
RowConst | row (size_t index) const |
| | Возвращает прокси-объект для строки по заданному индексу только для чтения.
|
| Col | col (size_t index) |
| | Возвращает прокси-объект для столбца по заданному индексу для модификации.
|
|
ColConst | col (size_t index) const |
| | Возвращает прокси-объект для столбца по заданному индексу только для чтения.
|
|
PIVector2D< T > & | setRow (size_t row, const RowConst &other) |
| | Заменяет строку содержимым объекта RowConst только для чтения.
|
|
PIVector2D< T > & | setRow (size_t row, const PIVector< T > &other) |
| | Заменяет строку содержимым PIVector.
|
| PIVector2D< T > & | addRow (const RowConst &other) |
| | Добавляет новую строку в конец массива из другого объекта Row.
|
|
PIVector2D< T > & | addRow (const PIVector< T > &other) |
| | Добавляет новую строку в конец массива из PIVector.
|
| PIVector2D< T > & | appendRows (size_t count, const T &f=T()) |
| | Добавляет count новых пустых строк в конец массива, заполненных значением f.
|
| PIVector2D< T > & | appendColumns (size_t count, const T &f=T()) |
| | Добавляет count новых пустых столбцов в конец каждой строки массива.
|
| PIVector2D< T > & | deleteRows (size_t row_start, size_t count) |
| | Удаляет count строк, начиная с указанного индекса строки.
|
| PIVector2D< T > & | deleteColumns (size_t col_start, size_t count) |
| | Удаляет указанные столбцы из массива и обновляет количество столбцов.
|
|
PIVector2D< T > & | addColumn (const ColConst &other) |
| | Добавляет новую строку в конец массива из ColConst.
|
|
PIVector2D< T > & | addColumn (const PIVector< T > &other) |
| | Добавляет новую строку в конец массива из PIVector.
|
| PIVector2D< T > & | resize (size_t rows, size_t cols, const T &f=T()) |
| | Изменяет размер двумерного массива.
|
| bool | operator== (const PIVector2D< T > &t) const |
| | Оператор равенства.
|
|
bool | operator!= (const PIVector2D< T > &t) const |
| | Оператор неравенства.
|
| PIVector< PIVector< T > > | toVectors () const |
| | Преобразует двумерный массив в вектор векторов (PIVector<PIVector<T>>).
|
|
const PIVector< T > & | asPlainVector () const |
| | Возвращает константную ссылку на внутренний плоский PIVector.
|
|
PIVector< T > & | asPlainVector () |
| | Возвращает ссылку на внутренний плоский PIVector.
|
|
PIVector< T > | toPlainVector () const |
| | Возвращает копию внутреннего плоского PIVector.
|
| void | swap (PIVector2D< T > &other) |
| | Меняет местами этот двумерный массив с другим.
|
| void | clear () |
| | Очищает массив, удаляя все элементы и устанавливая размеры в 0.
|
| bool | contains (const T &e) const |
| | Проверяет, содержит ли внутренний плоский вектор элемент e.
|
| int | entries (const T &e) const |
| | Подсчитывает количество вхождений e во внутреннем плоском векторе.
|
| int | entries (std::function< bool(const T &e)> test) const |
| | Подсчитывает элементы в плоском векторе, проходящие test.
|
| Index | indexOf (const T &e) const |
| | Возвращает первый индекс (строка, столбец) элемента e в двумерном массиве.
|
| Index | indexWhere (std::function< bool(const T &e)> test, ssize_t start=0) const |
| | Возвращает первый индекс (строка, столбец) в двумерном массиве, проходящий test.
|
| Index | lastIndexOf (const T &e, ssize_t start=-1) const |
| | Возвращает последний индекс (строка, столбец) элемента e в двумерном массиве.
|
| Index | lastIndexWhere (std::function< bool(const T &e)> test, ssize_t start=-1) const |
| | Возвращает последний индекс (строка, столбец) в двумерном массиве, проходящий test.
|
| bool | any (std::function< bool(const T &e)> test) const |
| | Проверяет, проходит ли какой-либо элемент в плоском векторе test.
|
| bool | every (std::function< bool(const T &e)> test) const |
| | Проверяет, проходят ли все элементы в плоском векторе test.
|
| PIVector2D< T > & | fill (const T &e=T()) |
| | Заполняет весь двумерный массив копиями e.
|
| PIVector2D< T > & | fill (std::function< T(size_t i)> f) |
| | Заполняет весь двумерный массив, используя функцию-генератор f на основе плоского индекса.
|
|
PIVector2D< T > & | assign (const T &e=T()) |
| | То же, что и fill().
|
| PIVector2D< T > & | assign (size_t rows, size_t cols, const T &f=T()) |
| | Задаёт новый размер и заполняет значением.
|
| PIVector2D< T > | transposed () const |
| | Возвращает транспонированный двумерный массив (строки становятся столбцами и наоборот).
|
| PIVector2D< T > & | reverseRows () |
| | Изменяет порядок строк на обратный на месте.
|
| PIVector2D< T > & | reverseColumns () |
| | Изменяет порядок столбцов в каждой строке на обратный на месте.
|
| PIVector2D< T > | getRange (size_t rowStart, size_t rowCount, size_t colStart, size_t colCount) const |
| | Возвращает подмассив (диапазон строк и столбцов).
|
| void | forEach (std::function< void(const T &)> func) const |
| | Применяет функцию к каждому элементу (только чтение).
|
| PIVector2D< T > & | forEach (std::function< void(T &)> func) |
| | Применяет функцию к каждому элементу (с возможностью изменения).
|
| template<typename ST> |
| PIVector2D< ST > | map (std::function< ST(const T &e)> f) const |
| | Применяет функцию к каждому элементу и возвращает новый двумерный массив другого типа.
|
| template<typename ST> |
| PIVector2D< ST > | mapIndexed (std::function< ST(size_t row, size_t col, const T &e)> f) const |
| | Применяет функцию (с индексами строки и столбца) к каждому элементу и возвращает новый двумерный массив.
|
| PIVector2D< T > & | forEachRow (std::function< void(Row)> f) |
| | Применяет функцию к каждой строке (с возможностью изменения).
|
|
void | forEachRow (std::function< void(RowConst)> f) const |
| | Применяет функцию к каждой строке (только чтение).
|
|
PIVector2D< T > & | forEachColumn (std::function< void(Col)> f) |
| | Применяет функцию к каждому столбцу (с возможностью изменения).
|
| void | forEachColumn (std::function< void(ColConst)> f) const |
| | Применяет функцию к каждому столбцу (только чтение).
|
| template<typename ST> |
| ST | reduce (std::function< ST(const T &e, const ST &acc)> f, const ST &initial=ST()) const |
| | Аккумулирует значение по всем элементам.
|
| template<typename ST> |
| ST | reduceIndexed (std::function< ST(size_t row, size_t col, const T &e, const ST &acc)> f, const ST &initial=ST()) const |
| | Аккумулирует значение по всем элементам с индексами.
|
| PIVector2D< T > & | removeRow (size_t row) |
| | Удаляет строку из двумерного массива.
|
| PIVector2D< T > & | removeColumn (size_t col) |
| | Удаляет столбец из двумерного массива.
|
| PIVector2D< T > & | removeRowsWhere (std::function< bool(const RowConst &)> test) |
| | Удаляет все строки, удовлетворяющие условию.
|
| PIVector2D< T > & | removeColumnsWhere (std::function< bool(const ColConst &)> test) |
| | Удаляет все столбцы, удовлетворяющие условию.
|
| PIVector2D< T > | filterRows (std::function< bool(const RowConst &)> test) const |
| | Возвращает новый двумерный массив, содержащий только строки, прошедшие проверку.
|
| PIVector2D< T > | filterColumns (std::function< bool(const ColConst &)> test) const |
| | Возвращает новый двумерный массив, содержащий только столбцы, прошедшие проверку.
|
template<typename T>
class PIVector2D< T >
Двумерный контейнер-массив.
Этот класс используется для хранения двумерного массива элементов любого типа в виде единого непрерывного блока памяти (обычного PIVector). Доступ к элементам осуществляется с помощью операторов [][], где первый индекс — это строка, а второй — столбец. Со строками можно работать как с объектами PIVector, что позволяет изменять отдельные элементы или присваивать целые строки. Нельзя напрямую добавлять или удалять элементы, чтобы изменить размеры массива после создания (используйте resize(), addRow(), removeRow(), removeColumn() для этого), но можно изменять значения существующих элементов.