diff options
Diffstat (limited to 'lang/cpptour/Vector.cc')
-rw-r--r-- | lang/cpptour/Vector.cc | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lang/cpptour/Vector.cc b/lang/cpptour/Vector.cc new file mode 100644 index 0000000..8f94345 --- /dev/null +++ b/lang/cpptour/Vector.cc @@ -0,0 +1,38 @@ +#include <stdexcept> + +#include "Vector.h" + +using namespace std; + +Vector::Vector (int s) +{ + if (s < 0) + throw length_error{"You're being negetive!"}; + elem = new double[s]; + sz = s; +} + +Vector::Vector (initializer_list<double> lst) +: elem {new double[lst.size()]}, sz {static_cast<int> (lst.size())} +{ + copy(lst.begin(), lst.end(), elem); +} + +Vector::~Vector () +{ + delete[] elem; +} + +int +Vector::size () noexcept +{ + return sz; +} + +double& +Vector::operator[] (int i) +{ + if (i < 0 || size() <= i) + throw out_of_range{"Vector::operator[]"}; + return elem[i]; +} |