СТЛ у језику ц ++: Све што треба да знате



Овај чланак ће вам пружити детаљно и свеобухватно знање о СТЛ-у на језику Ц ++, а такође ће вам дати идеју о различитим контејнерима.

Стандардна библиотека шаблона (СТЛ) је скуп класа шаблона Ц ++ који пружају уобичајене структуре података и функције програмирања као што су листе, стекови, низови итд. У овом чланку о СТЛ-у у Ц ++-у размотрићемо следеће смернице:

Настављамо са овим чланком о СТЛ-у на Ц ++





Ц ++ предлошци

Ц ++ нам пружа функцију шаблона која омогућава функцијама и класама да раде са генеричким типовима. Ово омогућава поновну употребу функције или класе и омогућава јој рад на многим различитим врстама података без поновног писања за сваку од њих.

Настављамо са овим чланком о СТЛ-у на Ц ++



Генеричке функције и СТЛ

Током програмирања често постоји потреба за стварањем функција које изводе исте операције, али раде са различитим типовима података. Дакле, да би се решио овај проблем, Ц ++ пружа функцију за стварање једне генеричке функције уместо многих функција које могу да раде са различитим врстама података помоћу параметра предлошка. Збирка ових генеричких класа и функција назива се Стандард Темплате Либрари (СТЛ)

Компоненте СТЛ-а које су сада део стандардне Ц ++ библиотеке дефинисане су у простору имена стд. Стога морамо користити директиву усинг намеспаце да бисмо их увезли у наш програм.

Синтакса:



Коришћење простора имена стд

СТЛ има три компоненте

  • Контејнери

  • Алгоритми

  • Итераторе

Ове три компоненте међусобно сарађују у синергији како би пружиле подршку разним програмским решењима. Алгоритам користи итераторе за извођење операција ускладиштених у контејнерима.

Контејнер је објекат који на организован начин складишти податке у меморији. Контејнери у СТЛ имплементирани су помоћу класа предложака и стога се могу лако модификовати и прилагодити да држе различите врсте података.

која је разлика између Јава и Ц ++

Поступак који се користи за обраду података садржаних у контејнерима дефинисан је као алгоритам. СТЛ укључује много различитих врста алгоритама који пружају подршку задацима попут иницијализације, претраживања, копирања, сортирања и спајања, копирања, сортирања и спајања. Алгоритми се примењују помоћу функција шаблона.

Итератор се може дефинисати као објекат који показује на елемент у контејнеру. Итератори се могу користити за кретање кроз садржај контејнера. Итераторима се рукује исто као показивачима. Можемо их повећавати или смањивати. Итератори повезују алгоритам са контејнерима и играју кључну улогу у манипулацији подацима ускладиштеним у контејнерима.

Container-STL-in-C++

Настављамо са овим чланком о СТЛ-у на Ц ++

Контејнери

СТЛ дефинише десет контејнера који су груписани у три категорије.

Контејнери

Опис

Датотека заглавља

Итератор

Вецтор

Може се дефинисати као динамички низ. Омогућава директан приступ било ком елементу.

Директног приступа

Листа

То је двосмерна линеарна листа. Омогућава уметање и брисање било где

Двосмерно

и

То је двоструки ред. Омогућава уметање и брисање на оба краја. Омогућава директан приступ било ком елементу.

Директног приступа

комплет

То је придружени контејнер за чување јединствених комплета. Омогућава брзо тражење.

Двосмерно

мултисет

То је придружени контејнер за складиштење нејединствених скупова.

Двосмерно

Мапа

То је придружени контејнер за чување јединствених парова кључ / вредност. Сваки кључ је повезан само са једном вредношћу.

Двосмерно

мултимап

То је придружени контејнер за чување кључа / вредности у којем један кључ може бити повезан са више вредности (мапирање један-према-више). Омогућава претрагу засновану на кључу.

Двосмерно

гомила

Стандардни стог следи последњи улаз-први-излаз (ЛИФО)

Нема итератора

ред

Стандардни ред следи први-први-изашао (ФИФО)

Нема итератора

приоритетни ред

Први елемент је увек елемент са највећим приоритетом

Нема итератора

Контејнери за секвенце

Контејнери за секвенце складиште елементе у линеарном редоследу. Сви елементи су међусобно повезани својим положајем дуж линије. Омогућавају уметање елемента и сви подржавају неколико операција на њима.

СТЛ пружа три врсте елемената секвенце:

  • Вецтор
  • Листа
  • и

Асоцијативни контејнери:

Дизајнирани су тако да могу да подрже директан приступ елементима помоћу тастера. Они нису секвенцијални. Постоје четири врсте

асоцијативни контејнери:

  1. Комплет
  2. Мултисет
  3. Мапа
  4. Мултимап

Сви горе наведени контејнери чувају податке у структури која се назива стабло и која олакшава брзо

претраживање, брисање и уметање за разлику од секвенцијалних. Контејнерски сет или мултисет могу да складиште разне предмете и пружају операције за манипулацију њима користећи вредности као кључеве.

А мапа или Мултимап се користе за чување предмета у пару, један се зове кључ, а други

назива вредност.

Изведени контејнери:

СТЛ нуди три изведена контејнера, наиме, стацк, куеуе и приор_куеуе. Они су такође познати и као адаптери за контејнере.

Постоје три врсте изведених контејнера:

1.Стоцк

2.Куеуе

3.Приорити_кууе

Стекови, ред и приоритетни ред могу се лако креирати из различитих контејнера за секвенце. Изведени контејнери не подржавају итераторе и стога их не можемо користити за манипулацију подацима. Међутим, они подржавају функцију два члана поп () и пусх () за спровођење операција брисања и уметања.

Настављамо са овим чланком о СТЛ-у на Ц ++

како приказати низ у пхп-у

Алгоритми

Алгоритми су функције које се генерално могу користити у различитим контејнерима за обраду њиховог садржаја. Иако сваки контејнер пружа функције за своје основне операције, СТЛ пружа више од шездесет стандардних алгоритама за подршку проширенијим или сложенијим операцијама. Стандардни алгоритми такође нам омогућавају да истовремено радимо са две различите врсте контејнера.

СТЛ алгоритми ојачавају филозофију поновне употребљивости. Коришћењем ових алгоритама програмери могу уштедети пуно времена и труда. Да бисмо имали приступ СТЛ алгоритмима, морамо да укључимо у наш програм.

СТЛ алгоритам, заснован на природи операција које изводе, може се категорисати као:

  • Немутирајући алгоритми

  • Мутинг алгоритми

  • Алгоритми за сортирање

  • Поставите алгоритме

  • Релациони алгоритам

Настављамо са овим чланком о СТЛ-у на Ц ++

Итератори:

Итератори се понашају попут показивача и користе се за приступ елементима контејнера. Помоћу итератора крећемо се кроз садржај контејнера. Итераторима се рукује исто као показивачима. Можемо их повећавати или смањивати према нашим захтевима. Итератори повезују контејнере са алгоритмима и играју виталну улогу у манипулацији подацима ускладиштеним у контејнерима. Често се користе за пролазак из једног елемента у други, овај процес се назива итерацијом кроз контејнер.

Постоји пет врста итератора:

1.Улаз

2.Оутпут

3.Напријед

4.Двосмерно

5.Случајно

Итератор

Начин приступа

Правац кретања

И / О способност

Напомена

Улазни

Линеарно

Само напред

Само за читање

Није могуће сачувати

Оутпут

Линеарно

Само напред

Само пиши

Није могуће сачувати

Напред

Линеарно

Само напред

Читај / пиши

Може се спасити

Двосмерно

Линеарно

Напријед и назад

Читај / пиши

Може се спасити

Случајно

Случајно

Напријед и назад

Читај / пиши

Може се спасити

Различите врсте итератора морају се користити са различитим врстама контејнера тако да само

контејнери за секвенце и асоцијације могу да путују кроз итераторе. Свака врста итератора користи се за обављање одређених функција. Улазни и излазни итератори подржавају најмање функција. Могу се користити само за пролазак кроз контејнер. Предњи итератори подржавају све операције улазних и излазних итератора и такође задржавају свој положај у контејнеру. Двосмерни итератор, иако подржава све операције итератора напред, пружа могућност кретања у назад у смеру контејнера.

Тако смо дошли до краја овог чланка о „СТЛ у Ц ++“. Ако желите да сазнате више, погледајте Едурека, поуздана компанија за учење на мрежи. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА осмишљен је тако да вас оспособи за основне и напредне Јава концепте заједно са разним Јава оквирима попут Хибернате & Спринг.

Имате питање за нас? Молимо вас да га помените у одељку за коментаре на овом блогу и јавићемо вам се што је пре могуће.