#ifndef YAGE_MATH_VECTOR_HPP #define YAGE_MATH_VECTOR_HPP #include #include namespace yage { class Vector { protected: std::vector members_; public: Vector()=delete; virtual ~Vector() {} inline long double &operator[](std::size_t index) { return members_[index]; } inline const long double &operator[](std::size_t index) const { return members_[index]; } inline Vector operator=(Vector other) { this->members_=other.members_; return *this; } inline Vector &operator+() { return *this; } inline Vector &operator-() { for(auto &i : members_) { i=-i; } return *this; } inline Vector &operator+=(const Vector &other) { for(std::size_t i=0; i mem; for(auto i : members_) { mem.emplace_back(i+other); } return Vector(mem); } inline Vector operator-(long double other) const { std::vector mem; for(auto i : members_) { mem.emplace_back(i-other); } return Vector(mem); } inline Vector operator*(long double other) const { std::vector mem; for(auto i : members_) { mem.emplace_back(i*other); } return Vector(mem); } inline Vector operator/(long double other) const { std::vector mem; for(auto i : members_) { mem.emplace_back(i/other); } return Vector(mem); } friend inline std::ostream &operator<<(std::ostream &os, const Vector &object) { os<<"("; for(std::size_t i=0; i &members) : members_(members) {} }; } // yage #endif