8#include <initializer_list>
12#include "../algorithms/sorting/quick_sort.h"
19template <
typename T,
size_t SIZE>
class Mat1d {
29 explicit Mat1d(std::vector<T> v = {}) : _size(SIZE) {
33 if (v.size() != _size) {
34 throw std::logic_error(
"Initializer array don't have the same size "
35 "as the constructed array");
37 for (size_t i = 0; i < _size; i++) {
41 } catch (std::logic_error& e) {
42 std::cerr << e.what() <<
'\n';
51 explicit Mat1d(std::initializer_list<T> il) : _size(SIZE) {
53 if (il.size() != _size) {
54 throw std::logic_error(
"Initializer list doesn't have the same size as "
55 "the constructed array");
57 std::copy(il.begin(), il.end(), arr);
64 explicit Mat1d(
const T val) noexcept : _size(SIZE) {
66 for (
size_t i = 0; i < _size; ++i) {
78 if (mat.
size() != _size) {
79 throw std::logic_error(
"Tried to copy matrices with different sizes");
81 this->arr =
new T[_size];
82 for (
size_t i = 0; i < _size; i++) {
83 this->arr[i] = mat.arr[i];
85 }
catch (std::logic_error& e) {
86 std::cerr << e.what() <<
'\n';
99 assert(mat.
size() == this->_size);
100 for (
size_t i = 0; i < _size; i++) {
101 this->arr[i] = mat.arr[i];
117 size_t size()
const {
return this->_size; }
124 T* begin() {
return &arr[0]; }
131 T*
end() {
return &arr[0] + SIZE; }
139 assert(index < _size);
150 if (mat.
size() != _size) {
154 for (
size_t i = 0; i < _size; i++) {
155 if (mat.arr[i] != this->arr[i]) {
177 for (
size_t i = 0; i < mat.
size(); i++) {
179 if (i != mat.
size() - 1) {
191template <
typename T,
size_t SIZE1,
size_t SIZE2>
196template <
typename T,
size_t SIZE1,
size_t SIZE2>
198 return !(mat1 == mat2);
Class for 1-dimensional Matrix.
Definition mat_1d.h:19
T * iterator
Iterator begin for Mat1d class.
Definition mat_1d.h:123
Mat1d(std::vector< T > v={})
constructor for Mat1d class
Definition mat_1d.h:29
friend std::ostream & operator<<(std::ostream &out, const Mat1d &mat)
operator << for Mat1d class
Definition mat_1d.h:175
~Mat1d()
destructor of Mat1d class
Definition mat_1d.h:110
size_t size() const
size function
Definition mat_1d.h:117
Mat1d(Mat1d &mat)
copy constructor for Mat1d class
Definition mat_1d.h:76
Mat1d & operator=(Mat1d &mat)
copy constructor for Mat1d class
Definition mat_1d.h:95
Mat1d(std::initializer_list< T > il)
constructor for Mat1d class with initializer list
Definition mat_1d.h:51
T * end()
Iterator end for Mat1d class.
Definition mat_1d.h:131
Mat1d(const T val) noexcept
constructor for Mat1d class with input value
Definition mat_1d.h:64
bool operator!=(const Mat1d< T, SIZE > &mat) const
operator != for Mat1d class
Definition mat_1d.h:168
T & operator[](const size_t index)
operator[] for Mat1d class
Definition mat_1d.h:138
bool operator==(const Mat1d< T, SIZE > &mat) const
operator == for Mat1d class
Definition mat_1d.h:149