
- if( a != null ) przy delete, zbedne
- czasem wystepuje niekonsekwencja get/set
- C-style cast zamiast C++ cast - duzo lepsza widocznosc castow w kodzie, wieksza kontrola
- zastapienie raw poinerow smart pointerami, zmniejszenie prawdopodobienstwa wyciekow

*** CompressedVector
*** CompressedIntVector
- Czemu nie sa napisane na szablonie? Nawet w opisie wspomniano, ze operacje powinny zachowywac sie identycznie. 
+ DecompressData i FreeBuffer, moze sprobowac wartosci w nieskompresowanym wektorze cashowac na dluzej? Modyfikacje i komentarz w komentarzach w kodzie.
+ Zastrzeżenia do operatora przypisania, mozliwe wycieki pamieci, nie kopiuje rozmiaru nieskompresowanej tablicy, nie ustawia i nie zeruje wskaznika na compressed data. Dodatkowo mozna byłoby argument zrobić stałą referencją zamiast zwykłej.

*** Matrix
- W sumie to macierze tez mozna byłoby napisac na szablonach, daloby to mozliwosc kompilacji programu w kilku wersjach, dla roznych dlugosci slowa. Mogloby to wplynac na ilosc zajmowanego w pamieci RAM miejsca, szybkosc obliczen i ich dokladnosc - tylko takie moje dywagacje.
- mozna byłoby się zastanowić nad mechanika funkcji Clone, np czy nie byloby duzo elastyczniej gdyby pobierala referencje na wskaznik lub wskaznik na wskaznik i ewentualnie zwracala wskaznik dodatkowo?
- GetRow, GetColumn mozna byloby sie zastnaowic nad parametrem dodatkowym, tablica na liczby, zeby nie tworzyc buforow lokalnych, a jedynie kopiowac dane, mogloby to byc szybsze w przypadku iteracji po wierszach/kolumnach (to jednak troche skomplikowalo by kilka funkcji).

*** MemoryMatrix
+ AllocateMemory da sie uprosicic mechanizm alokacji.
+ SetRow z parametrem vector<double> da sie napisac duzo efektywniej, bez petli.
- Clone, w opisie jest informacja, ze jesli parametrem bedzie null to macierz zostanie stworzona dynamicznie. Zastanawiam sie jednak, ktoredy bedzie ona zwrocona, bo parametrem jest pojedynczy wskaznik, nawet nie referencja na niego, a funkcja zwraca void (nic). Jeden z agumentow na poparcie zmiany mechaniki funkcji Clone, wspomiane wczesniej przy omawianiu klasy Matrix.
- Clone, w implementacji faktycznie tworzona jest nowa matrix, jesli wskaznik jest nullem, ale skoro wskaznik jest przekazywany przez wartosc to wskaznik poza funkcja dalej pozostaje niezmieiony (jest nullem w tym wypadku), a kopia wskaznika w funkcji faktycznie wskazuje na macierz, ale wskaznik ten nie jest nigdzie potem zwracany, wiec po wyjsciu ze 'scope' funkcji zostaje on skasowany, a nowo utworzona macierz staje sie jednym wielkim wyciekiem pamieci - rozwiazanie to przeslanie przez referencje np. Wiele wyciekow przy kopiowaniu wartosci wierszy, konkretnie tyle ile jest wierszy, ponad to mozna zamienic w petli wywolanie funkcji set(get) na zwykle memcpy, bedzie to znacznie szybsze dlatego, ze get i set row tworza tymczasowe tablice, ktore nastepnie trzeba jeszcze dodatkowo zwalniac co trwa i wymaga duzych operacji pamieciowych. Dodatkowo tworza sie wspomniane wczesniej wycieki pamieci, bo tablice pobrane z getrow nie byly zwalniane.


*** CRSMatrix
+ AllocateMemory mozna przyspieszyc inicjalizujac wektor z jednoczesna alokacja miejsca, skrócenie alokacji i oszczednosc miejsca (automatyczna relokacja nie jest precyzyjna - nie wie ile bedzie potrzebne miejsca w sumie).
- SetRow niepotrzebna zmienna lokalna.
+ SumRows wyciek pamieci, niezwalniana tablica z GetRow.
- Transpose, dziwny zwiazany z tworzeniem dodatkowego wskaznika i rzutowania - przeciez funkcje sa i tak wirtualne, wiec po co rozrozniac typ wskaznika (Derived vs Base).

*** CSSMatrix
+ AllocateMemory ta sama uwaga co w CRSMatrix.
+ SumRows ta sama uwaga co w CRSMatrix.
- Transpose ta sama uwaga co w CRSMatrix.

*** Feature
+ CountNZSum niezainicjalizowany iterator.

*** SuperMatrix
- SetBoundaries podwojne kopiowanie mapy, mozna argument przesylac przez referencje, mapa wejsciowa i tak nie ulegnie zmianie, bo jest wewnatrz funkcji jedynie kopiowana, a obiekt i tak korzysta nastepnie z tej kopii, a nie z mapy zadanej argumentem funkcji.
- Niespojnosc nazwenictwa geterów i seterów.
+ Clone wycieki pamieci przy tworzeniu macierzy. Nie sa one zwalniane i nie jest przechowywany do nich zadne wskazniki.
- Clone dziwne klonowanie wymagajace stworzenia obiektu tymczasowego.
+ NumberOfColumns/NumberOfRows mozna napisac w jedenj linijce.
+ GetCell da sie napisac w jednej linijce.

*** SimMatrix
+ konstruktor moglby alokowac sobie miejsce na starcie dla wektora, a nie realokowac go z co ktoryms pushem. Oszczednosc miejsca i czasu ;)
+ destruktor nie wymaga czyszczenia wektora, jest on trzymany jako wartosc, wiec na pewno i tak zostanie skasowany kiedy obiekt bedzie kasowany.
+ Co prawda macierz jest kwadratowa i nie ma potrzeby rozrozniania ilosci kolumn od wierszy, ale dla czystosci kodu wypadaloby.
- Czemu nie uzyto napisanego wczesniej CompressedVector zamiast implementowac cos analogicznego?
+ SetCell std::swap zamiast recznego swapowania mozna uzyc (szybsze, uzywa move).
- SetCell moze przeniesc marginesy dla 0 do #define zamiast wpisywac je w ciele funkcji?
- Clone dynamic_cast.
- SetDescriptior moze dodac by wartosc bool zwracana przez funkcje mowiaca o tym czy macierz zostala wyczyszczona czy jedynie jej opis zmieniony?
- GetSimilarity pobiera jeden string jako referencje, drugi jako argument. Mozna oba przeslac jako referencje zamiast kopiowac jeden z nich za kazdym razem.

*** supermatrixfilter
+ FilterCRS,FilterCCS inicjalizacja vectora, mozna zmniejszyc narzut pamieciowy i czasowy, niestety trudno zapewnic poprawny rozmiar wektora i zachowac szybkosc dzialania. Napisalem w komentarzu kod, ktory powinien zmniejszyc ilosc alokacji i przy podaniu poprawnych indeksow byc optymalnym z punktu widzenia pamieci.
- FilterRowFeatures,FilterColumnFeatures tak jak wyzej

*** SuperMatrixSplitter
- SuperMatrixSplitte wielokrotna realokacja wektora zamiast jednokronej inicjalizacji

*** measuers
+ GetMaxValue zbedne przypisanie za kazdym razem.
- 0 lub czasem 0. zamiast 0.0, ale to bez znaczenia w zasadzie.

*** matrices_precompiled
+ boost/algorith/string.hpp zaincludowany podwojnie.

*** utils
+ nic :)

*** logger
+ nic :)

*** matrices_all
+ nic :)

*** Matrices
+ nic :)

*** matrices_headers
+ nic :)
