konto usunięte
Temat: C++0x - czyżbyśmy się doczekali?
Artur Pietrzyk:
Jaka opinia by sie pojawila o STL'u w takim przypadku gdy znajowalo by sie w nim wiele algorytmow ale wiekszosc z nich nie dalo by sie wykorzystac w wiekszosci implementacji.
Wyobraz sobie ze jestes poczatkujacym programista, chcesz cos sobie napisac, znalazles informacje na stl sgi ze jest to wlasnie w tej bibliotece, wczesniej korzystales z vectorow, list z tej biblioteki, jest fajnie, gorzej jak siedzisz juz 2 dni nad ta biblioteka i nie potrafisz tego przerobic tak zeby spelnialo twoje oczekiwania, a samemu zrobilbys to w chwilke.
Logika stla jest taka ze programisci tej biblioteki nie przejmowali sie umiejetnosciami programisty. 1 element z vectora posiadajacy n ilosc elementow mozesz sobie usunac, ale kazdy powinien wiedziec ze odbywa sie to liniowo czyli usuwalac juz pare elementow z duzej tablicy osiagamy czas paru sekund, bo stl musi przesunac wszystko w lewo.
Niewiele mam książek o C++. A dokładniej, to mam kilka wydań "C++ Primer" Lippmana. No i jest tam napisane, kiedy użyć vector, list albo inne kontenery. Te informacje podane są razem z oszacowaniem czasochłonności np. usuwania elementu ze środka vector.
Jeśli więc programista nie przeczytał dokładnie dokumentacji, żadnej książki o C++, to potem są rzeczywiście "kfiatki".
Moim zdaniem jedynym wyjsciem jest wlasna implementacja takich elementarnych algorytmow.Albo przeczytanie porządnej książki o C++.
Własna implementacja algorytmów jest bardzo kształcąca i pewnie szybsza (ze wzgledu na operowanie na drobniejszych szczegółach - o ile jest się dobrym algorytmistą), ale potem przydaje się przejście na STL lub Boosta. Powód jest prosty: duża część problemów w programowaniu powtarza się i ludzie wynajdują właśnie takie kolekcje rozwiązań tyvh problemów w celu przyspieszenia roboty.
Nie znaczy to oczywiście, że źle robisz robiąc własne implementacje algorytmów. Jest tak dlatego, że niektóre problemy programistyczne mogą być niepokryte przez zakres stosowalności ww. bibliotek.