Шта су СТЛ контејнери у Ц++-у

Sta Su Stl Kontejneri U C U



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

Типови Ц++ СТЛ контејнера

У Ц++ постоје три типа СТЛ-а контејнери , који су наведени у наставку:







1: Узастопни контејнери

У Ц++, секвенцијални контејнери нам омогућавају да складиштимо ставке које се могу преузимати секвенцијално. Ове контејнери су кодирани као низови или повезане листе структура података. Неке врсте узастопних контејнера су дате у наставку.



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

Пример



У овом примеру користићемо векторска класа да покаже како А редни контејнер ради.





#инцлуде <иостреам>
#инцлуде <вектор>
користећи простор имена стд;
инт маин ( ) {
// иницијализовати вектор инт тип
вектор < инт > бројеви = { 10 , 2 , 16 , 70 , 5 } ;
// одштампати вектор
цоут << 'Бројеви су: ' ;
за ( ауто & ја: бр )
{
цоут << и << ', ' ;
}
повратак 0 ;
}

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



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

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

Тхе асоцијативна контејнери су категорисани као:

  • Мапа: колекцију парова кључ/вредност који су сортирани помоћу јединствених кључева
  • вишемапа: колекција парова кључ/вредност који су сортирани помоћу кључева
  • Комплет: Јединствени кључеви прикупљени и распоређени по кључевима.
  • Мултисет: збирка кључева који су сортирани помоћу кључева

Пример

Да илуструје како ан асоцијативна контејнер ради, користићемо поставити класу у овом примеру.

#инцлуде <иостреам>
#инцлуде <сет>
користећи простор имена стд;
инт маин ( )
{
// иницијализовати а комплет оф инт тип
комплет < инт > бројеви = { 10 , 2 , 16 , 70 , 5 } ;
// принт тһе комплет
цоут << 'Бројеви су: ' ;
за ( ауто & ја: бр )
{
цоут << и << ', ' ;
}
повратак 0 ;
}

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

3: Неуређени асоцијативни контејнери

У Ц++, неуређени асоцијативни контејнери се користе за обезбеђивање несортираних верзија ан асоцијативна контејнер . Они су интерно имплементирани као структуре података хеш табеле. Тхе асоцијативна контејнери су категорисани као:

  • Неуређена мапа: колекција парова кључ/вредност који су хеширани коришћењем јединствених кључева.
  • Неуређена вишемапа: колекција парова кључ/вредност која је хеширана помоћу кључева.
  • Неуређен скуп: збирка јединствених кључева који су хеширани помоћу кључева.
  • Неуређени вишеструки скуп: збирка кључева који су хеширани помоћу кључева.

Пример

Да би се илустровало како ан неуређени асоцијативни контејнер ради, користићемо неуређен скуп класе у овом примеру.

#инцлуде <иостреам>
#инцлуде <унордеред_сет>
користећи простор имена стд;
инт маин ( )
{
// иницијализовати унордеред_сет од инт тип
унордеред_сет < инт > бројеви = { 10 , 2 , 16 , 70 , 5 } ;
// принт тһе комплет
цоут << 'Бројеви су: ' ;
за ( ауто & ја: бр )
{
цоут << и << ', ' ;
}
повратак 0 ;
}

Закључак

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