This commit is contained in:
Leon Wilzer 2022-11-18 13:58:16 +01:00
parent 7715d07891
commit 19a290bebe

View File

@ -1,19 +1,21 @@
#include <cstddef>
#include <array>
#include <initializer_list>
#include <cmath>
class vec
{
private:
unsigned size;
const double nan = std::nan("");
unsigned vec_size;
double *vector;
public:
vec(size_t size) : size(size), vector(new double[size]) {}
vec(size_t size, double ival) : size(size), vector(new double[size])
vec(size_t size) : vec_size(size), vector(new double[size]) {}
vec(size_t size, double ival) : vec_size(size), vector(new double[size])
{
for(size_t i=0; i<size;++i) { vector[i]=ival; }
}
vec(std::initializer_list<double> ilist) : size(ilist.size()), vector(new double[size]) {
vec(std::initializer_list<double> ilist) : vec_size(ilist.size()), vector(new double[vec_size]) {
size_t i = 0;
for(std::initializer_list<double>::iterator itr = ilist.begin(); itr!=ilist.end();++itr)
{
@ -21,12 +23,55 @@ class vec
}
}
~vec() {delete[] vector; }
vec(const vec &m) : vector(new double[m.size])
~vec() {delete[] vector;}
vec(const vec &m) : vec_size(m.vec_size), vector(new double[vec_size])
{
for(size_t i=0; i<m.size;++i)
for(size_t i=0; i<vec_size;++i)
{
vector[i] = m.vector[i];
}
}
vec& operator= (const vec &m)
{
if(this!=&m)
{
vec_size = m.vec_size;
delete[] vector;
vector = new double[vec_size];
for(size_t i = 0; i<vec_size; ++i)
{
vector[i] = m.vector[i];
}
}
return *this;
}
vec(vec &&m) : vec_size(m.vec_size), vector(new double[vec_size])
{
vector = std::move(m.vector);
}
vec& operator= (vec &&m)
{
vec_size = m.vec_size;
vector = std::move(m.vector);
return *this;
}
size_t size()
{
return vec_size;
}
double& operator[] (size_t idx)
{
if(idx>vec_size)
{
return nan;
}
return vector[idx];
}
};