#ifndef HEADER_SMART_VECTOR #define HEADER_SMART_VECTOR #include "vector.h" #include template class Smart_Vector : public Vector { public: Smart_Vector() : Vector() {}; Smart_Vector(size_t capacity): Vector(capacity) {}; Smart_Vector(size_t capacity, T value): Vector(capacity,value) {}; Smart_Vector(const Vector& other) : Vector(other) {}; Smart_Vector operator+(const Smart_Vector& other); Smart_Vector& operator+=(const Smart_Vector& other); }; template Smart_Vector Smart_Vector::operator+(const Smart_Vector& other) { // Gathering the vector with the greater size. auto& maxVector = (this->_size > other._size ? *this : other); Smart_Vector returnVector(maxVector._size); returnVector._size = returnVector._capacity; size_t i(0); // Adding both vectors from 0 to the minimum size for(i=0; i_size,other._size); i++) returnVector._values[i] = this->_values[i] + other._values[i]; // Then simply copying the max vector values onto the return vector. for(size_t j=i; j Smart_Vector& Smart_Vector::operator+=(const Smart_Vector& other) { size_t i(0), minimumSize(std::min(this->_size,other._size)); for(i = 0; i_values[i] += other._values[i]; for(size_t j=i; jPushBack(other._values[j]); return *this; } #endif // HEADER_SMART_VECTOR