idk
This commit is contained in:
parent
7715d07891
commit
19a290bebe
@ -1,19 +1,21 @@
|
|||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <initializer_list>
|
#include <initializer_list>
|
||||||
|
#include <cmath>
|
||||||
class vec
|
class vec
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
unsigned size;
|
const double nan = std::nan("");
|
||||||
|
unsigned vec_size;
|
||||||
double *vector;
|
double *vector;
|
||||||
public:
|
public:
|
||||||
vec(size_t size) : size(size), vector(new double[size]) {}
|
vec(size_t size) : vec_size(size), vector(new double[size]) {}
|
||||||
vec(size_t size, double ival) : 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; }
|
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;
|
size_t i = 0;
|
||||||
for(std::initializer_list<double>::iterator itr = ilist.begin(); itr!=ilist.end();++itr)
|
for(std::initializer_list<double>::iterator itr = ilist.begin(); itr!=ilist.end();++itr)
|
||||||
{
|
{
|
||||||
@ -21,12 +23,55 @@ class vec
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
~vec() {delete[] vector; }
|
~vec() {delete[] vector;}
|
||||||
vec(const vec &m) : vector(new double[m.size])
|
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];
|
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];
|
||||||
|
}
|
||||||
};
|
};
|
Loading…
x
Reference in New Issue
Block a user