Szukałem kilku źródeł implementacji STL (SGI, STLport, libC++) i zobaczyłem kilka wzorców projektowych, które wydają się wspólne dla wszystkich lub większości implementacji, ale nie mogłem znaleźć żadnego powodu. Zakładam, że nie musi być dobrym reson, i chcą wiedzieć, co to jest:Uzasadnienie projektu za STL
Wiele klas, w tym
vector
ilist_iterator
między innymi, zostały zaimplementowane jako 2 klasy, na przykładlist_iterator_base
z częścią funkcji, a następnielist_iterator
, która dziedziczylist_iterator_base
z resztą interfejsu. O co chodzi? Wydaje się, że można to zrobić tak łatwo w jednej klasie.Wygląda na to, że iteratory nie korzystają z klasy
iterator
. Czy za korzystanie z niej jest pewna kara za wydajność?
To są 2 pytania, które znalazłem w szybkim tempie. Jeśli ktokolwiek wie o dobrym źródle wyjaśniającym uzasadnienie implementacji STL, z przyjemnością się o tym dowiem.
"Jumbo shrimp". –
Należy zauważyć, że pod względem technicznym biblioteka STL i biblioteka standardowa (stdlib) są różne. Ten ostatni był w przeważającej części wyprowadzony z pierwszego, kiedy został dodany do oficjalnego standardu językowego. Prawie nikt nie używa już "prawdziwego" STL, ale zamiast tego używa implementacji standardowej biblioteki (np. LibC++). Wiele osób odnosi się do stdlib jako STL i tak jest zwykle dobrze, ale dla twojego pytania rozróżnienie zmienia znaczenie. – GManNickG
@DaveNewton Nie rozumiem twojego komentarza. – baruch