Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include<iostream>
- using namespace std;
- template <typename T>
- class Vector{
- private:
- size_t dimensions;
- T* data;
- public:
- Vector<T>(size_t dimensions) {
- if (dimensions <= 0)
- throw std::domain_error("rozmiar tablicy musi być wiekszy niz zero");
- else{
- this->dimensions = dimensions;
- this->data = new T[dimensions];
- }
- }
- Vector<T>(const Vector<T> & vec) : dimensions(vec.size()), data(new T[vec.size()]) {
- for (size_t i = 0; i < vec.size();i++) {
- data[i] = vec[i];
- }
- }
- virtual~Vector<T>() {
- if(data) delete data;
- }
- size_t size() const {
- return dimensions;
- }
- T & at(size_t index) {
- return data[index];
- }
- T at(size_t index) const {
- return data[index];
- }
- T & operator[](size_t index) {
- return data[index];
- }
- T operator[](size_t index) const {
- if (index > sizeof(data))
- throw std::out_of_range("Element o takim indeksie nie istnieje");
- else
- return data[index];
- }
- Vector<T> & operator=(const Vector<T> & vec) {
- delete data;
- dimensions = vec.size();
- data = new T[dimensions];
- for (size_t i = 0; i < vec.size(); i++) {
- data[i] = vec[i];
- }
- return *this;
- }
- };
- template<typename T>
- Vector<T> add(const Vector<T>& a, const Vector<T>& b) {
- Vector<T> c(a.size());
- for (size_t i = 0; i < a.size(); i++) {
- c[i] = a[i] + b[i];
- }
- return c;
- }
- template<typename T>
- bool equals(const Vector<T>& a, const Vector<T>& b) {
- if(&a == &b) return true;
- if(a.size() != b.size())
- return false;
- for (size_t i = 0; i < a.size(); i++) {
- if(a[i] != b[i]) return false;
- }
- return true;
- }
- template<typename T>
- Vector<T> operator+(const Vector<T>& a, const Vector<T>& b) {
- Vector<T> c(a.size());
- for (size_t i = 0; i < a.size(); i++) {
- c[i] = a[i] + b[i];
- }
- return c;
- }
- template<typename T>
- Vector<T> operator-(const Vector<T>& a, const Vector<T>& b) {
- Vector<T> c(a.size());
- for (size_t i = 0; i < a.size(); i++) {
- c[i] = a[i] - b[i];
- }
- return c;
- }
- template<typename T>
- bool operator==(const Vector<T>& a, const Vector<T>& b) {
- if (&a == &b) return true;
- if (a.size() != b.size()) return false;
- for (size_t i = 0; i < a.size(); i++) {
- if (a[i] != b[i]) return false;
- }
- return true;
- }
- template<typename T>
- bool operator!=(const Vector<T>& a, const Vector<T>& b) {
- if (&a != &b) return true;
- if (a.size() == b.size()) return false;
- for (size_t i = 0; i < a.size(); i++) {
- if (a[i] == b[i]) return false;
- }
- return true;
- }
- template<typename T>
- ostream & operator<<(ostream &wyjscie, const Vector<T>& vec) {
- for (size_t i = 0; i < vec.size(); i++) {
- wyjscie << vec[i] << " : ";
- }
- return wyjscie;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement