13 #ifndef OSFI_CONFM_DYNAMIC_ARRAY
14 #define OSFI_CONFM_DYNAMIC_ARRAY
39 for (
int i = 0; i < rows; ++i)
41 data.push_back(std::vector<T> (columns));
52 const std::vector<T> & operator[](
int i)
const {
62 typename std::vector<T>::reference
operator()(
int i,
int j) {
72 typename std::vector<T>::const_reference
operator()(
int i,
int j)
const {
83 typename std::vector<T>::reference
at(
int i,
int j){
84 return checkIndices(this->data, i, j);
94 typename std::vector<T>::const_reference
at(
int i,
int j)
const {
95 return checkIndices(this->data, i, j);
105 for (
int i = 0; i < rows; ++i)
121 return data[0].size();
127 std::vector<std::vector<T>> data;
131 static auto derefChecked(V& vec,
int i,
const char* indexName) -> decltype(vec[i]) {
135 std::throw_with_nested(std::out_of_range(
136 std::string(
"While accessing ") + indexName +
std::to_string(i)));
145 static auto checkIndices(C& mat,
int i,
int j) -> decltype(mat[i][j]) {
146 auto& row = derefChecked(mat, i,
"row");
147 return derefChecked(row, j,
"column");
158 return lhs.data == rhs.data;
164 return !(lhs == rhs);
OSFI-C++ header common to many classes in the ConFM module.
Definition: DynamicArray.h:27
std::vector< T >::const_reference operator()(int i, int j) const
Definition: DynamicArray.h:72
std::vector< T >::const_reference at(int i, int j) const
Definition: DynamicArray.h:94
friend bool operator==(const DynamicArray &lhs, const DynamicArray &rhs)
Definition: DynamicArray.h:157
std::vector< T >::reference at(int i, int j)
Definition: DynamicArray.h:83
void resize(int rows, int columns)
Definition: DynamicArray.h:103
OSFI_DEPRECATED("Use operator() instead to access elements like mat(i,j)") const std
Definition: DynamicArray.h:51
friend bool operator!=(const DynamicArray &lhs, const DynamicArray &rhs)
Definition: DynamicArray.h:163
int getRows() const
Definition: DynamicArray.h:112
DynamicArray(int rows, int columns)
Definition: DynamicArray.h:38
int getColumns() const
Definition: DynamicArray.h:119
std::string to_string(ElementType et)