Własna implementacja std::vector z interpolacją danych i paradygmatem copy-on-write.
Z założenia większość metod działa identycznie jak w STL'owej implementacji vector'a.
Jedynie dla uproszczenia, metody zamiast przyjmować iteratory przyjmują wartości typu size_t oznaczające indeks.
double avg(); - zwraca wartość średnią z wektora
double interpolate(double pos); - pozwala na interpolację danych, dla parametru całkowitego działa jak metoda at()
double max(); - zwraca wartość maksymalną wrzuconą do wektora (złożoność czasowa O(1))
double min(); - zwraca wartość minimalną wrzuconą do wektora (złożoność czasowa O(1))
void reverse(); - odwraca dane w wektorze
void sort(bool reverse); - sortuje dane w wektorze w kolejności rosnącej (reverse odwraca kolejność)
Dzięki mechanizmowi interpolacji danych, można odczytywać dane z pomiędzy komórek:
vector v(2);
v.push_back(0); //v[0] = 0
v.push_back(10); //v[1] = 10
std::cout << v.interpolate(0); //Zwraca 0
std::cout << v.interpolate(0.65); //Zwraca 6.5MyVector project is my own implementation of std::vector with data interpolation and copy-on-write paradigm implemented.
For an instance, most of the methods are STL-like implementations.
Only for simplify, methods instead taking iterators it take like size_t values which means index.
double avg(); - returns avarage value from a vector
double interpolate(double pos); - interpolates given double value, in case of int type value, it will behave like at() method
double max(); - returns maximal value found in a vector (time complexity O(1))
double min(); - returns minimal value found in a vector (time complexity O(1))
void reverse(); - reverses an order of elements stored in a vector
void sort(bool reverse); - sorts data stored in a vector in ascending order ("bool reverse" reverse order)
Due to used interpolation mechanism this implementation allows to read data from between cells:
vector v(2);
v.push_back(0); //v[0] = 0
v.push_back(10); //v[1] = 10
std::cout << v.interpolate(0); //returns 0
std::cout << v.interpolate(0.65); //returns 6.5