| Это часть стандартной библиотеки. К жизни она вызвана следующим соображениями. В голых C и C++ нет массивов и строк, таких как их принято видеть в других языках программирования. Выход за границу массива может привести к непредсказуемым последствиям, обычно в других языка это означает, что почти ничего не случится. В C++ это не так, компилятор вас не предупредит, что вы перепахиваете соседнюю область программы - программа может зациклиться в бесконечный цикл (сам видел) там где циклов вообще нет, может завершиться критической ошибкой (чаще всего), а может работать как ни в чём не бывало, но откомпилирова её на другом компиляторе через много лет вы вдруг обнаружите, что программа отказывается выполнять свои функции.
Как с этим борятся? Пишут свои собственные библиотеки (классы) массивов, строк, других структур (списков, стеков, деков и т.п.) - пишут на совесть и используют. Конечно всем надоело, что каждый раз приходится решать эту задачу по новой - как сейчас в PHP каждый свою CMS разрабатывает, в результате море CMS несовместимых друг с другом и их всё равно каждый день по сотне появляется. Решили устроить антибабель (babel - вавилонское смешение языков) - создать такую библиотеку, чтобы все могли пользоваться, самую скоростную, самую эффективную, самую удобную, которую напишут самые крутые профи и включить её в стандрат - чтобы она была частью каждого компилятора. Ну... в общем это всё удалось практически на 90%, некоторые корявки конечно есть, но на фоне того, что получилось об них можно забыть.
Это не значит, что C++ программист должен забыть об очередях и списках - всё таки разрабатывать их следует, хотя бы для того, чтобы знать как работает STL. Кроме того, их разработку часто задают при приёме на работу (особенно программисты старой закалки, которые ещё и с секундомером будут около вас стоять).
Просто взять и использовать STL не получится - это C-библиотека, хоть в ней и используется ООП, это 100% философия старого C - пока не освоите указатели и шаблоны - это будет чёрной магией. Кроме того, так как библиотека ориенитирована на профессионалов, разработчик, пользующийся STL должен поинимать как устроена библиотека, контейнеры и алгоритмы, только тогда он сможет выбрать правильный алгоритм в каждой конкретной ситуации.
PS STL нужно знать, без знания STL вы не будете полноценным C++ программистом. Язык сильнотипизированный - шаблоны по неволе приходится использовать - область не самая простая, здесь STL очень кстати. Ошибку совершить на C++ - это раз плюнуть, даже чуть расслабившемуся профи. Поэтому вылизанная профессиональная библиотека здесь очень кстати. STL - это не мода, это жизненно-необходимый инструмент любого современного разработчика. | |