Стандартты үлгілердің кітапханасы

**Стандартты үлгілердің кітапханасы** (STL) (ағылш . Standard Template Library ) - келісілген жалпыланған Алгоритмдер мен контейнерлердің жиынтығы, олардың құрамына кіретін құралдар, және C++ - тың әртүрлі қосалқы функцияларының жиынтығы.

Стандартты үлгілер кітапханасы, C ++ стандарты қосылғанға дейін, бастапқыда — HP фирмасының, содан кейін SGI-ның бөгде әзірлемесі болды. Тіл стандарты "STL" деп атамайды, өйткені бұл кітапхана тілдің ажырамас бөлігіне айналды, алайда көптеген адамдар осы атауды стандартты кітапхананың қалған бөлігінен (енгізу-шығару ағындары (iostream), С бөлімшесі және т.б.) ажырату үшін әлі күнге дейін пайдаланады.

SGI STL — де негізделген STLPort деп аталатын жоба: STL, iostream және жол кластарын үнемі жаңартады. Кейбір басқа жобалар түрлі конструкторлық тапсырмалар үшін стандартты кітапхананың жеке қолдануларын әзірлеумен айналысады. Әрбір c++ компиляторлар өндірушісі міндетті түрде осы кітапхананы жүзеге асырады, өйткені ол стандарттың өте маңызды бөлігі болып табылады және кеңінен қолданылады.

STL архитектурасын Александр Степанов және Менг Ли әзірледі.

## Тарихы
1993 жылдың қарашасында Александр Степанов ANSI/ISO комитетіне әмбебап бағдарламалауға негізделген c++ стандарттау бойынша Кітапхананы ұсынды. Комитеттің жауабы көптеген қолайлы болды және Эндрю Кениг 1994 жылдың наурыз айында кеңеске ресми ұсыныс беруді сұрады. Комитетте өзгерістер мен ұзартулар туралы бірнеше өтініш болды және Комитет мүшелері Степановпен және Мэн Лимен кездесті. Ең маңызды кеңейтулерге (ассоциативті контейнерлерге) қойылатын талаптар оларды іске асыру жолымен толық көлемде дәлелденуі тиіс және бұл міндет Степанов Дэвид Мюссерге тапсырды. Бұл ұсыныс 1994 жылдың шілдесінде ANSI/ISO комитетінің отырысында түпкілікті мақұлдау алды. Кейіннен 17 Степанов пен Ли құжаты ANSI/ISO C++ стандартының жобасына (1, 17-27 тармақтардың бөліктері) енгізілді.

STL ерте кең таралуының келешегі 1994 жылдың тамызында Hewlett-Packard компаниясының оны енгізуді Интернетте еркін қол жетімді ету шешімін қабылдауымен айтарлықтай жақсарды. Стандарттау процесінде Степанов, Ли және Мюссер әзірлеген бұл іске асыру бүгінде компиляторлар мен кітапханалардың жеткізушілері ұсынатын көптеген іске асырудың негізі болды.

## STL—дің негізгі компоненттері

STL негізінен төменде аталған келесі компоненттерден тұрады:

*1) **Контейнерлер** ()

Контейнер-бұл деректер құрылымының белгілі бір түрінің объектілерінің жиынтығы. STL-да бізде array, vector, queue, deque, list, map, set және т.б. сияқты контейнерлік кластардың әртүрлі түрлері бар.

Контейнерлер табиғатына қарай серпінді және объектілердің әртүрлі түрлерін сақтау үшін пайдаланылуы мүмкін.

*2) **Алгоритмдер** ()

Алгоритмдер-бұл контейнерлерге әсер ететін әдістер немесе Функциялар. STL ұсынатын алгоритмдерді пайдалана отырып, біз контейнерлік класс объектілерінің мазмұнын іздеу, сұрыптау, өзгерту, түрлендіру немесе инициализациялау әдістерін пайдалана аламыз.

STL ұсынатын Алгоритмдер Алгоритмдер алгоритмдерді өзі жазу орнына күрделі деректер құрылымымен тікелей жұмыс істей алатын кірістірілген функциялары бар.

Мысалы, STL-дегі reverse () функциясы байланысқан тізімнің реверсіне пайдаланылуы мүмкін.

*3) **Итераторлар** ()

Итераторлар-бұл өте маңызды және ерекше STL. Итераторлар-бұл контейнер объектілері бойынша қозғалу үшін пайдаланылатын конструкциялар. Біз массивтерді қадамдық іріктеу үшін пайдаланатын индекстер сияқты, итераторлар контейнерлік кластағы объектілерге әрекет етеді және деректерді қадамдық іріктеу үшін пайдаланылуы мүмкін.

## Контейнерлер

Элементтерді сақтауға арналған контейнерлерде объектілерді мәні бойынша беру семантикасы қолданылады. Басқаша айтқанда, контейнер қосылған кезде элемент көшірмесін алады. Егер көшірмені жасау қажет емес болса, элементтерге көрсеткіштер контейнерін пайдаланады. Элементтерді беру оператордың көмегімен жүзеге асырылады, ал оларды жою деструкторды пайдалана отырып жүргізіледі.
Кестеде контейнерлердегі элементтерге қойылатын негізгі талаптар келтірілген:

Барлық " толыққанды " стандартты контейнерлер талаптардың (немесе келісімдердің) белгілі бір жиынтығын қанағаттандырады. Төменде келтірілген кестеде Т типті объектілерді қамтитын контейнердің с-сыныбы.

## Итераторлар
Кітапханада STL қол жеткізу үшін элементтері делдал ретінде пайдаланылады жалпылама абстракция итератор деп аталады . Әрбір контейнер нақты контейнердің элементтеріне қалай қол жеткізуге болатынын білетін "жаңартылған" интеллектуалды көрсеткіш болып табылатын Итератор түрін қолдайды. C стандарты келесі кестеде сипатталған итераторлардың бес санатын анықтайды :

## Дереккөздер

## Сыртқы сілтемелер
* SGI STL кластары мен әдістерінің анықтамасы
* STL по шагам Артем Каев мақалалары
* Основы C++. Библиотека STL  — тарату мұрағаты
* STL — Стандартная библиотека шаблонов. Руководство C++ программиста — толық нұсқаулық
*  C++ тілінде STL пайдалану
* C++ —тағы STL итераторларына шолу 

Санат:C++