Ciao a tutti.
Sto riprovando a creare una classe di vettori matematici particolarmente ben fatta (spero non sia troppo difficile). Questa é l'interfaccia che ho scritto (non ho ancora cominciato l'implementazione). Cosa ne pensate? Ci sono tutte le funzioni necessarie? La move semantics é corretta?
Grazie mille,
R.
Ps: È la prima volta che uso i templates e non ho compilato...
Pps: Vorrei creare anche una classe Matrix... Consigliate di partire da quella e derivare Vector ma Matrix?
codice:#ifndef VECTOR_H #define VECTOR_H #include <iostream> #include <utility> #include <vector> #include <initializer_list> template <typename T> class Vector { // --- External Operators --- friend Vector<T> operator*(const T&, const Vector<T>&); friend Vector<T> operator*(const vector<T>&, const T&); friend std::ostream& operator<<(std::ostream&, const Vettore&); public: // --- Constructors --- Vector<T>(); Vector<T>(size_t); Vector<T>(const T&, const T&); Vector<T>(T&&, T&&); Vector<T>(const T&, const T&, const T&); Vector<T>(T&&, T&&, T&&); Vector<T>(const std::vector<T>&); Vector<T>(const std::initializer_list<T>&); Vector<T>(const Vector<T>&); Vector<T>(std::vector<T>&&); Vector<T>(std::initializer_list<T>&); Vector<T>(Vector<T>&&); // --- Inner Operators --- Vector<T>& operator=(const Vector<T>&); Vector<T>&& operator=(Vector<T>&&); T& operator()(int); const T& operator()(int) const; bool operator==(const Vettore<T>&) const; bool operator!=(const Vettore<T>&) const; Vector<T>& operator+=(const Vector<T>e&); Vector<T>& operator-=(const Vector<T>&); Vector<T> operator+(const Vector<T>&) const; Vector<T> operator-(const Vector<T>&) const; Vector<T> operator-() const; T operator*(const Vector<T>&) const; // --- Methods --- void set(); void set(const T&); size_t size() const; T norm() const; private: // --- Attributes --- std::vector<T> vector; }; #endif

Rispondi quotando