STL в c ++: Всичко, което трябва да знаете



Тази статия ще ви предостави подробни и всеобхватни познания за STL в C ++ и ще ви даде представа и за различните контейнери.

Стандартната библиотека на шаблони (STL) е набор от класове шаблони на C ++, които осигуряват общи структури и функции за програмиране като списъци, стекове, масиви и др. В тази статия на STL в C ++ ще обсъдим следните указатели:

Продължавайки с тази статия за STL в C ++





C ++ шаблони

C ++ ни предоставя функция на шаблони, която позволява на функциите и класовете да работят с общи типове. Това позволява повторната употреба на функция или клас и й позволява да работи върху много различни типове данни, без да се пренаписва за всеки един.

Продължавайки с тази статия за STL в C ++



Общи функции и STL

Докато програмирате много пъти, има нужда от създаване на функции, които изпълняват едни и същи операции, но работят с различни типове данни. Така че за преодоляване на този проблем C ++ предоставя функция за създаване на една обща функция вместо много функции, които могат да работят с различен тип данни, като използват параметъра на шаблона. Колекцията от тези генерични класове и функции се нарича Стандартна библиотека на шаблони (STL)

Компонентите на STL, които сега са част от стандартната библиотека C ++, са дефинирани в пространството от имена std. Следователно трябва да използваме директивата using пространство на имена, за да ги импортираме в нашата програма.

Синтаксис:



Използване на пространство за имена std

STL има три компонента

  • Контейнери

  • Алгоритми

  • Итератори

Тези три компонента работят заедно помежду си в синхрон, за да осигурят подкрепа за различни програмни решения. Алгоритъмът използва итератори за извършване на операция, съхранявана в контейнери.

Контейнерът е обект, който съхранява данни в паметта по организиран начин. Контейнерите в STL се изпълняват от класове на шаблони и следователно могат лесно да бъдат модифицирани и персонализирани, за да съдържат различни видове данни.

Процедура, която се използва за обработка на данните, съдържащи се в контейнерите, се определя като алгоритъм. STL включва много различни видове алгоритми за осигуряване на поддръжка на задачи като инициализиране, търсене, копиране, сортиране и обединяване, копиране, сортиране и обединяване. Алгоритмите се реализират чрез функции на шаблона.

Итераторът може да бъде дефиниран като обект, който сочи към елемент в контейнер. Итераторите могат да се използват за придвижване през съдържанието на контейнери. Итераторите се обработват точно като указатели. Можем да ги увеличаваме или намаляваме. Итераторите свързват алгоритъма с контейнери и играят ключова роля в манипулирането на данните, съхранявани в контейнерите.

Container-STL-in-C++

Продължавайки с тази статия за STL в C ++

Контейнери

STL определя десет контейнера, които са групирани в три категории.

Контейнери

Описание

Заглавен файл

Итератор

Вектор

Може да се определи като динамичен масив. Той позволява директен достъп до всеки елемент.

Произволен достъп

Списък

Това е двупосочен линеен списък. Позволява вмъкване и изтриване навсякъде

Двупосочна

и

Това е двойна опашка. Позволява вмъкване и изтриване в двата края. Разрешава директен достъп до всеки елемент.

Произволен достъп

комплект

Това е асоцииран контейнер за съхранение на уникални набори. Позволява бързо търсене.

Двупосочна

мултимножество

Това е асоцииран контейнер за съхраняване на не-уникални набори.

Двупосочна

карта

Това е асоцииран контейнер за съхраняване на уникални двойки ключ / стойност. Всеки ключ е свързан само с една стойност.

Двупосочна

мултимап

Това е асоцииран контейнер за съхраняване на ключ / стойност, в който един ключ може да бъде свързан с повече от една стойност (картографиране един към много). Тя позволява търсене въз основа на ключ.

Двупосочна

стек

Стандартен стек следва последен-първи-излязъл (LIFO)

как да свържа базата данни на mysql в java -

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

опашка

Стандартна опашка следва първо в първото излизане (FIFO)

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

приоритетна опашка

Първият елемент винаги е елемент с най-висок приоритет

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

Контейнери за последователност

Контейнерите за последователност съхраняват елементи в линеен ред. Всички елементи са свързани помежду си чрез тяхното положение по линията. Те позволяват вмъкване на елемент и всички те поддържат няколко операции върху тях.

STL осигурява три типа последователни елементи:

  • Вектор
  • Списък
  • и

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

Те са проектирани по такъв начин, че да могат да поддържат директен достъп до елементи с помощта на ключове. Те не са последователни. Има четири вида

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

  1. Комплект
  2. Multiset
  3. Карта
  4. Multimap

Всички горепосочени контейнери съхраняват данни в структура, наречена дърво, която улеснява бързо

търсене, изтриване и вмъкване за разлика от последователното. Комплектът контейнери или мултимножество могат да съхраняват различни елементи и да предоставят операции за манипулирането им, използвайки стойностите като ключове.

А map или Multimap се използват за съхраняване на елементи по двойки, едната се нарича ключ, а другата

наречена стойност.

Производни контейнери:

STL осигурява три производни контейнера, а именно, стек, опашка и приоритетна_опашка. Те са известни още като адаптери за контейнери.

Има три вида производни контейнери:

1. Подредете

2. Опашка

3. Приоритетна_реда

Стекове, опашка и опашка с приоритет могат лесно да бъдат създадени от различни контейнери за последователност. Получените контейнери не поддържат итератори и следователно не можем да ги използваме за манипулиране на данни. Те обаче поддържат функция от два членове pop () и push () за изпълнение на операции за изтриване и вмъкване.

Продължавайки с тази статия за STL в C ++

Алгоритми

Алгоритмите са функции, които могат да се използват обикновено в различни контейнери за обработка на тяхното съдържание. Въпреки че всеки контейнер предоставя функции за основните си операции, STL предоставя повече от шестдесет стандартни алгоритми за поддържане на по-разширени или сложни операции. Стандартните алгоритми също ни позволяват да работим с два различни типа контейнери едновременно.

STL алгоритмите подсилват философията за повторна употреба. Използвайки тези алгоритми, програмистите могат да спестят много време и усилия. За да имаме достъп до STL алгоритмите, трябва да включим в нашата програма.

STL алгоритъм, въз основа на естеството на операциите, които извършват, може да бъде категоризиран като:

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

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

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

  • Задайте алгоритми

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

Продължавайки с тази статия за STL в C ++

Итератори:

Итераторите действат като указатели и се използват за достъп до елементи на контейнера. Използваме итератори за придвижване през съдържанието на контейнери. Итераторите се обработват точно като указатели. Можем да ги увеличаваме или намаляваме според нашите изисквания. Итераторите свързват контейнери с алгоритми и играят жизненоважна роля в манипулирането на данните, съхранявани в контейнерите. Те често се използват за преминаване от един елемент към друг, този процес се нарича итерация през контейнера.

Има пет вида итератори:

1. Вход

2. Изход

3. Напред

4. Двупосочен

5. Случайно

Итератор

Метод за достъп

Посока на движение

Възможност за I / O

Забележка

Вход

Линейна

Само напред

Само за четене

Не може да бъде запазено

Изход

Линейна

Само напред

Пишете само

Не може да бъде запазено

Напред

Линейна

Само напред

Чети пиши

Може да се запази

Двупосочна

Линейна

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

Чети пиши

Може да се запази

Случайни

Случайни

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

Чети пиши

превръща низ в масив php

Може да се запази

Различни видове итератори трябва да се използват с различните видове контейнери, така че само

Последователността и асоциативните контейнери могат да пътуват през итератори. Всеки тип итератори се използва за изпълнение на определени функции. Входните и изходните итератори поддържат най-малко функции. Те могат да се използват само за преминаване през контейнер. Препращащите итератори поддържат всички операции на входни и изходни итератори, а също така запазват позицията си в контейнера. Двупосочен итератор, макар да поддържа всички операции на итератори напред, предоставя възможност за движение в обратна посока в контейнера.

По този начин стигнахме до края на тази статия за „STL в C ++“. Ако искате да научите повече, разгледайте от Edureka, доверена компания за онлайн обучение. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен да ви обучи както за основните, така и за разширените Java концепции, заедно с различни Java рамки като Hibernate & Spring.

Имате въпрос към нас? Моля, споменете го в раздела за коментари на този блог и ние ще се свържем с вас възможно най-скоро.