#ifndef _INTVEKTOR_IS_THE_BEST_ #define _INTVEKTOR_IS_THE_BEST_ #include //Skapar en vektor med heltal (integers) class intVektor { public: //Standard konstruktör - skapar en ny intVektor med storlek 0 //Pre: True //Post: En ny intVekor har skapats explicit intVektor(); //Kontruktör - skapar en ny intVetkor med storlek size //Pre: size => 0 //Post: En ny intVektor har skapats explicit intVektor(int size); //Kopieringskonstruktör - skapar en ny intVetor med data från en annan intVektor (kopia) //Pre: True //Post: En kopia av rh har skapats intVektor(const intVektor& rh); //Destruktör - raderar en intVetkor och alla dess data //Pre: True //Post: Alla data för intVektorn har raderas och intVektor har upphört att existera virtual ~intVektor(); //Tilldelning - tilldelar intVektor data och storlek från en annan intVektor //Pre: True //Post: Alla data och storleken för rh har satts till denna intVektor och en referens till denna har returnerats virtual intVektor& operator=(const intVektor& rh); //Hämta värde på position position //Pre: 0 < value < size() //Post: Värdet på position har returnerats virtual int& operator[](const int position) const; //Adderar två stycken lika stora arrayers värden kolumnvis //Pre: this.size() == rh.size() //Post: virtual const intVektor operator+(const intVektor& rh); //Returnerar storleken på arrayen //Pre: True //Post: Returnerat storleken på arrayen virtual int size(); private: //Nod för att lagra data och vidarelänka till efterföljande data. class intNode { friend class intVektor; private: //Innehåller datavärden för noden int data; //Pekare till nästa nod, pekar till 0 om detta är den sista noden intNode* next; }; //Skapar numberOfNodes nya noder i en sammanlänkad kjedja och returerar en pekre till första elementet i kjedjan. //Pre: True //Post: Returnerat adressen till den första noden intNode* createNewNodes(int numberOfNodes); //Utökar antalet noder i arrayen med numberOfNodes nya noder genom att hänga på dem i slutet på arrayen //Pre: True //Post: Har utökat antalet noder i arrayen void extendArray(int numberOfNodes); //Raderar sista noden i arrayen //Pre: size > 0 //Post: Raderat sista elementet void removeLast(); //Pekare till första elementet om size > 0 ELLER pekare till 0 om size = 0 intNode * head; //size => 0 int sIze; }; //Other operators //Används för att skriva ut data från vektorn //Pre: True //Post: Skrivit ut en lista över alla tal i vektorn std::ostream& operator<<(std::ostream& os, intVektor rh); //Används för att läsa in en kommaseparerad lista till vektorn //Pre: is är kommaseparerad enligt int,int,int,...,int //Post: Om antal inlästa värden är < rh.size(): läses så många värden som finns in till vektorn // > rh.size(): läsas så många värden som får plats in till vektorn // = rh.size(): läses samtliga värden in till vektorn std::istream& operator>>(std::istream& is, intVektor& rh); #endif