PIP 5.6.1
Platform-Independent Primitives
Классы | Открытые члены | Полный список членов класса
Шаблон класса PIVector2D< T >

Двумерный контейнер-массив. Подробнее...

#include <pivector2d.h>

Классы

class  Col
 Прокси-класс, представляющий один столбец в PIVector2D для модификации. Подробнее...
 
class  ColConst
 Прокси-класс, представляющий один столбец в PIVector2D только для чтения. Подробнее...
 
struct  Index
 Структура индекса для элементов двумерного массива (строка, столбец). Подробнее...
 
class  Row
 Прокси-класс, представляющий одну строку в PIVector2D для модификации. Подробнее...
 
class  RowConst
 Прокси-класс, представляющий одну строку в PIVector2D только для чтения. Подробнее...
 

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

 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
 Возвращает подмассив (диапазон строк и столбцов). Подробнее...
 
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() для этого), но можно изменять значения существующих элементов.

Конструктор(ы)

◆ PIVector2D() [1/5]

template<typename T >
PIVector2D< T >::PIVector2D ( )
inline

Создаёт пустой двумерный массив. Память не выделяется.

После этого конструктора rows() и cols() возвращают 0, а isEmpty() возвращает true.

См. также
PIVector::PIVector()

◆ PIVector2D() [2/5]

template<typename T >
PIVector2D< T >::PIVector2D ( size_t  rows,
size_t  cols,
const T &  f = T() 
)
inline

Создаёт двумерный массив заданного размера, заполненный копиями f.

Внутреннее хранилище представляет собой единый непрерывный блок памяти размером rows * cols. Все элементы инициализируются значением f.

См. также
PIVector::PIVector(size_t, const T&)

◆ PIVector2D() [3/5]

template<typename T >
PIVector2D< T >::PIVector2D ( size_t  rows,
size_t  cols,
const PIVector< T > &  v 
)
inline

Создаёт двумерный массив из существующего одномерного вектора, изменяя его форму.

Конструктор копирует данные из v во внутренний плоский вектор. Если v больше, чем rows * cols, лишние элементы игнорируются (вектор обрезается). Если v меньше, остальные значения будут заполнены из конструктора по умолчанию T()

См. также
PIVector::PIVector(const PIVector&), reshape()

◆ PIVector2D() [4/5]

template<typename T >
PIVector2D< T >::PIVector2D ( size_t  rows,
size_t  cols,
PIVector< T > &&  v 
)
inline

Конструктор перемещения из существующего одномерного вектора, изменяя его форму.

Данные перемещаются из v во внутренний плоский вектор, что позволяет избежать копирования. После завершения конструктора v остаётся в корректном, но неопределённом состоянии.

См. также
PIVector::PIVector(PIVector&&)

◆ PIVector2D() [5/5]

template<typename T >
PIVector2D< T >::PIVector2D ( const PIVector< PIVector< T > > &  v)
inline

Создаёт двумерный массив из вектора векторов (рваного массива). Предполагается, что все внутренние векторы имеют одинаковый размер.

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

См. также
PIVector::append()

Методы

◆ rows()

template<typename T >
size_t PIVector2D< T >::rows ( ) const
inline

Возвращает количество строк в двумерном массиве.

Возвращает
Number of rows.

Результат всегда неотрицательный. Если массив пуст, возвращает 0.

См. также
cols(), size(), PIVector::size()

◆ cols()

template<typename T >
size_t PIVector2D< T >::cols ( ) const
inline

Возвращает количество столбцов в двумерном массиве.

Возвращает
Number of columns.

Результат всегда неотрицательный. Если массив пуст, возвращает 0.

См. также
rows(), size(), PIVector::size()

◆ size()

template<typename T >
size_t PIVector2D< T >::size ( ) const
inline

Возвращает общее количество элементов (строки * столбцы).

Возвращает
Total number of elements.

Это эквивалентно размеру внутреннего плоского вектора.

См. также
rows(), cols(), PIVector::size()

◆ size_s()

template<typename T >
ssize_t PIVector2D< T >::size_s ( ) const
inline

Возвращает общее количество элементов в виде знакового числа.

Возвращает
Signed size.
См. также
size(), PIVector::size_s()

◆ length()

template<typename T >
size_t PIVector2D< T >::length ( ) const
inline

Возвращает общее количество элементов (то же, что и size()).

Возвращает
Total number of elements.
См. также
size(), PIVector::length()

◆ capacity()

template<typename T >
size_t PIVector2D< T >::capacity ( ) const
inline

Возвращает количество элементов, для которого сейчас выделена память во внутреннем контейнере.

Возвращает
Capacity of the flat vector.

Это значение может быть больше, чем size(). Оно показывает, сколько элементов можно добавить до того, как потребуется перераспределение памяти.

См. также
reserve(), PIVector::capacity()

◆ isEmpty()

template<typename T >
bool PIVector2D< T >::isEmpty ( ) const
inline

Проверяет, пуст ли массив.

Возвращает
true if the array is empty, false otherwise.

Пустой массив имеет и строки, и столбцы равные 0.

См. также
isNotEmpty(), PIVector::isEmpty()

◆ isNotEmpty()

template<typename T >
bool PIVector2D< T >::isNotEmpty ( ) const
inline

Проверяет, не пуст ли массив.

Возвращает
true if the array is not empty, false otherwise.
См. также
isEmpty(), PIVector::isNotEmpty()

◆ element()

template<typename T >
T & PIVector2D< T >::element ( size_t  row,
size_t  col 
)
inline

Возвращает ссылку на элемент по заданной строке и столбцу.

Проверка границ не выполняется.

См. также
at() (const version), PIVector::operator[]

◆ at()

template<typename T >
const T & PIVector2D< T >::at ( size_t  row,
size_t  col 
) const
inline

Возвращает константную ссылку на элемент по заданной строке и столбцу

Проверка границ не выполняется.

◆ operator[]()

template<typename T >
Row PIVector2D< T >::operator[] ( size_t  index)
inline

Возвращает прокси-объект для строки по заданному индексу для модификации.

См. также
row(), Col

◆ data()

template<typename T >
T * PIVector2D< T >::data ( size_t  index = 0)
inline

Возвращает указатель на внутренние плоские данные, начиная с опционального смещения.

См. также
PIVector::data()

◆ row()

template<typename T >
Row PIVector2D< T >::row ( size_t  index)
inline

Возвращает прокси-объект для строки по заданному индексу для модификации.

См. также
operator[]

◆ col()

template<typename T >
Col PIVector2D< T >::col ( size_t  index)
inline

Возвращает прокси-объект для столбца по заданному индексу для модификации.

См. также
col() const

◆ addRow()

template<typename T >
PIVector2D< T > & PIVector2D< T >::addRow ( const RowConst other)
inline

Добавляет новую строку в конец массива из другого объекта Row.

Если массив был пуст, количество столбцов устанавливается равным размеру исходной строки. В противном случае копируется только min(cols(), other.size()) элементов; остальные элементы новой строки инициализируются по умолчанию.

См. также
PIVector::push_back()

◆ appendRows()

template<typename T >
PIVector2D< T > & PIVector2D< T >::appendRows ( size_t  count,
const T &  f = T() 
)
inline

Добавляет count новых пустых строк в конец массива, заполненных значением f.

Если массив был пуст (количество столбцов не определено), количество столбцов устанавливается равным 1. Новые строки заполняются значением по умолчанию f.

См. также
addRow(), appendColumns()

◆ appendColumns()

template<typename T >
PIVector2D< T > & PIVector2D< T >::appendColumns ( size_t  count,
const T &  f = T() 
)
inline

Добавляет count новых пустых столбцов в конец каждой строки массива.

Если массив был пуст (строки не определены), массив становится одной строкой с count столбцов. Если массив уже содержит строки, новые элементы добавляются в конец каждой существующей строки.

См. также
appendRows(), addColumn()

◆ deleteRows()

template<typename T >
PIVector2D< T > & PIVector2D< T >::deleteRows ( size_t  row_start,
size_t  count 
)
inline

Удаляет count строк, начиная с указанного индекса строки.

Удаляет указанные строки из массива и обновляет количество строк. Если все элементы удалены (массив становится пустым), количество строк и столбцов устанавливается в 0.

См. также
deleteColumns()

◆ deleteColumns()

template<typename T >
PIVector2D< T > & PIVector2D< T >::deleteColumns ( size_t  col_start,
size_t  count 
)
inline

Удаляет указанные столбцы из массива и обновляет количество столбцов.

Удаляет count столбцов начиная с col_start. Если col_start выходит за границы или count равен 0, функция ничего не делает. Если count выходит за последний столбец, удаляются только доступные столбцы.

См. также
removeColumn(), deleteRows()

◆ resize()

template<typename T >
PIVector2D< T > & PIVector2D< T >::resize ( size_t  rows,
size_t  cols,
const T &  f = T() 
)
inline

Изменяет размер двумерного массива.

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

PIVector2D<int> mat(2, 3, 0); // 2x3 matrix filled with 0
mat.resize(3, 4, 1); // becomes 3x4, new elements filled with 1
Двумерный контейнер-массив.
Definition: pivector2d.h:59
См. также
PIVector::resize()

◆ operator==()

template<typename T >
bool PIVector2D< T >::operator== ( const PIVector2D< T > &  t) const
inline

Оператор равенства.

См. также
PIVector::operator==

◆ toVectors()

template<typename T >
PIVector< PIVector< T > > PIVector2D< T >::toVectors ( ) const
inline

Преобразует двумерный массив в вектор векторов (PIVector<PIVector<T>>).

Каждый вектор-строка является копией соответствующей строки.

См. также
fromVectors(), PIVector::PIVector(const T*, size_t)

◆ swap()

template<typename T >
void PIVector2D< T >::swap ( PIVector2D< T > &  other)
inline

Меняет местами этот двумерный массив с другим.

Обменивает внутренние плоские векторы и члены, хранящие размеры. Очень быстро, без выделения памяти.

См. также
PIVector::swap()

◆ clear()

template<typename T >
void PIVector2D< T >::clear ( )
inline

Очищает массив, удаляя все элементы и устанавливая размеры в 0.

Ёмкость внутреннего плоского вектора может остаться неизменной.

См. также
PIVector::clear()

◆ contains()

template<typename T >
bool PIVector2D< T >::contains ( const T &  e) const
inline

Проверяет, содержит ли внутренний плоский вектор элемент e.

См. также
PIVector::contains()

◆ entries() [1/2]

template<typename T >
int PIVector2D< T >::entries ( const T &  e) const
inline

Подсчитывает количество вхождений e во внутреннем плоском векторе.

См. также
PIVector::entries()

◆ entries() [2/2]

template<typename T >
int PIVector2D< T >::entries ( std::function< bool(const T &e)>  test) const
inline

Подсчитывает элементы в плоском векторе, проходящие test.

См. также
PIVector::entries(std::function)

◆ indexOf()

template<typename T >
Index PIVector2D< T >::indexOf ( const T &  e) const
inline

Возвращает первый индекс (строка, столбец) элемента e в двумерном массиве.

См. также
PIVector::indexOf()

◆ indexWhere()

template<typename T >
Index PIVector2D< T >::indexWhere ( std::function< bool(const T &e)>  test,
ssize_t  start = 0 
) const
inline

Возвращает первый индекс (строка, столбец) в двумерном массиве, проходящий test.

См. также
PIVector::indexWhere()

◆ lastIndexOf()

template<typename T >
Index PIVector2D< T >::lastIndexOf ( const T &  e,
ssize_t  start = -1 
) const
inline

Возвращает последний индекс (строка, столбец) элемента e в двумерном массиве.

См. также
PIVector::lastIndexOf()

◆ lastIndexWhere()

template<typename T >
Index PIVector2D< T >::lastIndexWhere ( std::function< bool(const T &e)>  test,
ssize_t  start = -1 
) const
inline

Возвращает последний индекс (строка, столбец) в двумерном массиве, проходящий test.

См. также
PIVector::lastIndexWhere()

◆ any()

template<typename T >
bool PIVector2D< T >::any ( std::function< bool(const T &e)>  test) const
inline

Проверяет, проходит ли какой-либо элемент в плоском векторе test.

См. также
PIVector::any()

◆ every()

template<typename T >
bool PIVector2D< T >::every ( std::function< bool(const T &e)>  test) const
inline

Проверяет, проходят ли все элементы в плоском векторе test.

См. также
PIVector::every()

◆ fill() [1/2]

template<typename T >
PIVector2D< T > & PIVector2D< T >::fill ( const T &  e = T())
inline

Заполняет весь двумерный массив копиями e.

См. также
PIVector::fill()

◆ fill() [2/2]

template<typename T >
PIVector2D< T > & PIVector2D< T >::fill ( std::function< T(size_t i)>  f)
inline

Заполняет весь двумерный массив, используя функцию-генератор f на основе плоского индекса.

См. также
PIVector::fill(std::function)

◆ assign()

template<typename T >
PIVector2D< T > & PIVector2D< T >::assign ( size_t  rows,
size_t  cols,
const T &  f = T() 
)
inline

Задаёт новый размер и заполняет значением.

См. также
PIVector::assign(size_t, const T&)

◆ transposed()

template<typename T >
PIVector2D< T > PIVector2D< T >::transposed ( ) const
inline

Возвращает транспонированный двумерный массив (строки становятся столбцами и наоборот).

Элемент (r, c) исходного массива становится элементом (c, r) в результате.

PIVector2D<int> mat(2, 3, ...);
auto t = mat.transposed(); // now 3x2

◆ reverseRows()

template<typename T >
PIVector2D< T > & PIVector2D< T >::reverseRows ( )
inline

Изменяет порядок строк на обратный на месте.

См. также
reverseColumns(), PIVector::reverse()

◆ reverseColumns()

template<typename T >
PIVector2D< T > & PIVector2D< T >::reverseColumns ( )
inline

Изменяет порядок столбцов в каждой строке на обратный на месте.

См. также
reverseRows(), PIVector::reverse()

◆ getRange()

template<typename T >
PIVector2D< T > PIVector2D< T >::getRange ( size_t  rowStart,
size_t  rowCount,
size_t  colStart,
size_t  colCount 
) const
inline

Возвращает подмассив (диапазон строк и столбцов).

Если диапазон выходит за границы массива, он обрезается. Если rowCount или colCount равны 0, возвращается пустой массив.

См. также
PIVector::getRange()

◆ map()

template<typename T >
template<typename ST >
PIVector2D< ST > PIVector2D< T >::map ( std::function< ST(const T &e)>  f) const
inline

Применяет функцию к каждому элементу и возвращает новый двумерный массив другого типа.

Исходный массив не изменяется.

См. также
PIVector::map()

◆ mapIndexed()

template<typename T >
template<typename ST >
PIVector2D< ST > PIVector2D< T >::mapIndexed ( std::function< ST(size_t row, size_t col, const T &e)>  f) const
inline

Применяет функцию (с индексами строки и столбца) к каждому элементу и возвращает новый двумерный массив.

См. также
PIVector::mapIndexed()

◆ forEachRow()

template<typename T >
PIVector2D< T > & PIVector2D< T >::forEachRow ( std::function< void(Row)>  f)
inline

Применяет функцию к каждой строке (с возможностью изменения).

См. также
forEachRow() const, PIVector::forEach()

◆ forEachColumn()

template<typename T >
void PIVector2D< T >::forEachColumn ( std::function< void(ColConst)>  f) const
inline

Применяет функцию к каждому столбцу (только чтение).

Аргументы
fFunction taking a ColConst.

◆ reduce()

template<typename T >
template<typename ST >
ST PIVector2D< T >::reduce ( std::function< ST(const T &e, const ST &acc)>  f,
const ST &  initial = ST() 
) const
inline

Аккумулирует значение по всем элементам.

См. также
PIVector::reduce()

◆ reduceIndexed()

template<typename T >
template<typename ST >
ST PIVector2D< T >::reduceIndexed ( std::function< ST(size_t row, size_t col, const T &e, const ST &acc)>  f,
const ST &  initial = ST() 
) const
inline

Аккумулирует значение по всем элементам с индексами.

См. также
PIVector::reduceIndexed()

◆ removeRow()

template<typename T >
PIVector2D< T > & PIVector2D< T >::removeRow ( size_t  row)
inline

Удаляет строку из двумерного массива.

Если удаляется последняя строка и массив становится пустым, cols() устанавливается в 0.

См. также
removeColumn(), PIVector::remove()

◆ removeColumn()

template<typename T >
PIVector2D< T > & PIVector2D< T >::removeColumn ( size_t  col)
inline

Удаляет столбец из двумерного массива.

Эта операция дороже, чем удаление строки, поскольку требуется перемещение элементов.

См. также
removeRow(), PIVector::remove()

◆ removeRowsWhere()

template<typename T >
PIVector2D< T > & PIVector2D< T >::removeRowsWhere ( std::function< bool(const RowConst &)>  test)
inline

Удаляет все строки, удовлетворяющие условию.

Строки удаляются снизу вверх, чтобы избежать проблем со смещением индексов.

См. также
removeColumnsWhere(), PIVector::removeWhere()

◆ removeColumnsWhere()

template<typename T >
PIVector2D< T > & PIVector2D< T >::removeColumnsWhere ( std::function< bool(const ColConst &)>  test)
inline

Удаляет все столбцы, удовлетворяющие условию.

См. также
removeRowsWhere()

◆ filterRows()

template<typename T >
PIVector2D< T > PIVector2D< T >::filterRows ( std::function< bool(const RowConst &)>  test) const
inline

Возвращает новый двумерный массив, содержащий только строки, прошедшие проверку.

См. также
filterColumns(), PIVector::filter()

◆ filterColumns()

template<typename T >
PIVector2D< T > PIVector2D< T >::filterColumns ( std::function< bool(const ColConst &)>  test) const
inline

Возвращает новый двумерный массив, содержащий только столбцы, прошедшие проверку.

См. также
filterRows()