Об изучении STL
От: cpp_beginner  
Дата: 08.02.10 20:09
Оценка:
Пытаясь разобраться, как реализованы алгоритмы стандартной библиотеки, приходится продираться через заборы #ifdef, отладочных макросов, да и просто через, так сказать, своеобразный coding style (реализация от MS, другие пока не пробовал).
Тут же захотелось странного — а что, если создать реализацию STL (хотя бы только в виде контейнеры + алгоритмы), предназначенную исключительно для учебных целей — т.е. максимально прозрачный код, снабженный комментариями и документацией. Существует ли что-нибудь подобное?

Да, еще интересно — какая из книг по STL максимально описывает ее "внутренности"? Я понимаю, что существуют разные реализации, но на всех них налагает свои требования Стандарт, так что различия не должны быть принципиальны.
Re: Об изучении STL
От: placement_new  
Дата: 09.02.10 05:32
Оценка:
Здравствуйте, cpp_beginner, Вы писали:

_>Да, еще интересно — какая из книг по STL максимально описывает ее "внутренности"? Я понимаю, что существуют разные реализации, но на всех них налагает свои требования Стандарт, так что различия не должны быть принципиальны.


http://itbookz.ru/nodata/nodatalang/2660-.html
Эта возможно.
Re: Об изучении STL
От: savitar  
Дата: 09.02.10 07:00
Оценка:
Здравствуйте, cpp_beginner, Вы писали:

_>...


Скачай с сайта SGI версию по старее и разбирайся.
Re: Об изучении STL
От: VitaliyZ Украина  
Дата: 09.02.10 09:00
Оценка:
Здравствуйте, cpp_beginner, Вы писали:
...
реализация от MS, другие пока не пробовал
...

Просто к слову, нет Microsoft-реализации STL, студия поставляется с "Dinkumware C++ standard library"
http://en.wikipedia.org/wiki/Dinkumware
Re: Об изучении STL
От: gear nuke  
Дата: 09.02.10 18:45
Оценка: 2 (1)
Здравствуйте, cpp_beginner, Вы писали:

_>Тут же захотелось странного — а что, если создать реализацию STL (хотя бы только в виде контейнеры + алгоритмы), предназначенную исключительно для учебных целей — т.е. максимально прозрачный код, снабженный комментариями и документацией. Существует ли что-нибудь подобное?


(из того, что видел)

Максимально прозрачный код — версия от авторов, HP STL. Но следует понимать, то не она писалась по Стандарту, а наоборот и там нет iostreams и т.п. И нет комментариев.

Наиболее хорошо откомментирована Стандартная библитотека (бранч SGI) из поставки GCC (для Винды качаем MinGW). Можно пропустить сорцы через Doxygen и получить доку в HTML. Других вариантов с комментариями не знаю (если не считать ONTL, но... там довольно много "но" в частности к алгоритмам и контейнерам комментарии появятся только на следующей итерации)

Еще, следует учесть, что современные версии библиотеки оптимизируются, в частности за счет частичных специализаций, поэтому код выходит несколько запутанным, реализации дробятся на функции с __ в именах.

Касаемо "учебных целей" — инженерам пристало учиться у природы, обратить внимание, что каждая сущность имеет как минимум двойственное предназначение ("голова нам дана не только что бы думать, но и соображать", "а еще мы туда едим"), поэтому если будешь создавать — лучше иметь в запасе и "план Б".
.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re: Об изучении STL
От: blinded  
Дата: 10.02.10 11:59
Оценка: 4 (2)
Здравствуйте, cpp_beginner, Вы писали:

_>Пытаясь разобраться, как реализованы алгоритмы стандартной библиотеки, приходится продираться через заборы #ifdef, отладочных макросов, да и просто через, так сказать, своеобразный coding style (реализация от MS, другие пока не пробовал).

_>Тут же захотелось странного — а что, если создать реализацию STL (хотя бы только в виде контейнеры + алгоритмы), предназначенную исключительно для учебных целей — т.е. максимально прозрачный код, снабженный комментариями и документацией. Существует ли что-нибудь подобное?

_>Да, еще интересно — какая из книг по STL максимально описывает ее "внутренности"? Я понимаю, что существуют разные реализации, но на всех них налагает свои требования Стандарт, так что различия не должны быть принципиальны

Все уже украдено до нас Вводи в строке поиска имя алгоритма и получаешь и пример реализации и пример использования
Re[2]: Маловато будет (с)
От: serg_joker Украина  
Дата: 11.02.10 15:21
Оценка:
Здравствуйте, blinded, Вы писали:

Все уже украдено до нас Вводи в строке поиска имя алгоритма и получаешь и пример реализации и пример использования


Боюcь, что там описаны приблизительные реализации только самые тривиальных вещей (типа find).
Сходу (безуспешно) попробовал найти: partial_sort, sort, vector::rend, next_permutation.

Вобще, по моему мнению, все же лучше хорошая книга по STL. Например — Джосатис "C++. Стандартная библиотека". Эта книга даст очень хорошую базу пользователю STL.

К сожалению, реализацию, простую для анализа, посоветовать не могу. В принципе, при небольшой сноровке и с хорошим инструментарием (вроде visual assist) вполне можно понять и реализацию, идущую с MS VC (лучше, таки да, старенькую взять, например, от VS98).
Re: Об изучении STL
От: Olorin  
Дата: 11.02.10 18:43
Оценка: 1 (1)
На сайте же есть достаточно подробная и понятная статья.
http://rsdn.ru/summary/562.xml
Re: Об изучении STL
От: MasterZiv СССР  
Дата: 12.02.10 08:58
Оценка: +1
cpp_beginner wrote:
> Пытаясь разобраться, как реализованы алгоритмы стандартной библиотеки,
> приходится продираться через заборы #ifdef, отладочных макросов, да и
> просто через, так сказать, своеобразный coding style (реализация от MS,
> другие пока не пробовал).

Изучай лучше реализацию из GCC. Разительное отличие в этом плане.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Маловато будет (с)
От: igna Россия  
Дата: 16.02.10 14:15
Оценка:
Здравствуйте, serg_joker, Вы писали:

_>Вобще, по моему мнению, все же лучше хорошая книга по STL. Например — Джосатис "C++. Стандартная библиотека".


Это сборище опечаток не содержит исходного кода STL. Вот правильная книга: The C++ Standard Template Library.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.