У Ц++, СТЛ (Стандард Темплате Либрари), контејнери су објекти који се користе за чување колекција других објеката. Они функционишу слично шаблонима класа и подржавају велики број типова елемената и обезбеђују функције чланова за приступ њиховим елементима директно или преко итератора.
Типови Ц++ СТЛ контејнера
У Ц++ постоје три типа СТЛ-а контејнери , који су наведени у наставку:
1: Узастопни контејнери
У Ц++, секвенцијални контејнери нам омогућавају да складиштимо ставке које се могу преузимати секвенцијално. Ове контејнери су кодирани као низови или повезане листе структура података. Неке врсте узастопних контејнера су дате у наставку.
- вектор: То је низ динамичке величине који се складишти у меморији на непрекидан начин.
- о чему: Представља двострани ред који подржава операције и за уметање и за брисање.
- Низ: То је статички низ који се додељује током компилације док његова величина остаје фиксна.
- Листа: То је двоструко повезана листа која врши брзо уметање и брисање елемената на било ком месту на листи.
- Листа унапред: То је једноструко повезана листа попут листе, али можете је прећи само у једном правцу.
Пример
У овом примеру користићемо векторска класа да покаже како А редни контејнер ради.
#инцлуде <иостреам>
#инцлуде <вектор>
користећи простор имена стд;
инт маин ( ) {
// иницијализовати вектор инт тип
вектор < инт > бројеви = { 10 , 2 , 16 , 70 , 5 } ;
// одштампати вектор
цоут << 'Бројеви су: ' ;
за ( ауто & ја: бр )
{
цоут << и << ', ' ;
}
повратак 0 ;
}
Горњи код изнад показује употребу редни контејнери у векторском формату, који омогућава складиштење целих низова. Програм иницијализује вектор типа цео број, додељује му вредности и штампа их помоћу петље. Овај пример показује како је лако чувати и приступати подацима у Ц++ користећи секвенцијални контејнер .
2: Асоцијативни контејнери
Асоцијативни контејнери омогућавају нам да складиштимо елементе у одређеном редоследу који дефинише оператор поређења. за разлику од секвенцијални контејнери , редослед елемената у асоцијативни контејнери се одржава помоћу кључева који омогућавају корисницима да организују елементе и приступе им. Када је елемент уметнут у ан асоцијативни контејнер , аутоматски се сортира на исправној позицији на основу свог кључа. Ови типови контејнера се интерно имплементирају као структуре података бинарног стабла.
Тхе асоцијативна контејнери су категорисани као:
- Мапа: колекцију парова кључ/вредност који су сортирани помоћу јединствених кључева
- вишемапа: колекција парова кључ/вредност који су сортирани помоћу кључева
- Комплет: Јединствени кључеви прикупљени и распоређени по кључевима.
- Мултисет: збирка кључева који су сортирани помоћу кључева
Пример
Да илуструје како ан асоцијативна контејнер ради, користићемо поставити класу у овом примеру.
#инцлуде <иостреам>#инцлуде <сет>
користећи простор имена стд;
инт маин ( )
{
// иницијализовати а комплет оф инт тип
комплет < инт > бројеви = { 10 , 2 , 16 , 70 , 5 } ;
// принт тһе комплет
цоут << 'Бројеви су: ' ;
за ( ауто & ја: бр )
{
цоут << и << ', ' ;
}
повратак 0 ;
}
Горњи код иницијализује скуп целих бројева у Ц++, што је пример асоцијативног контејнера. Скуп осигурава да се елементи сортирају у растућем редоследу подразумевано. Код затим штампа бројеве у скупу користећи фор петљу.
3: Неуређени асоцијативни контејнери
У Ц++, неуређени асоцијативни контејнери се користе за обезбеђивање несортираних верзија ан асоцијативна контејнер . Они су интерно имплементирани као структуре података хеш табеле. Тхе асоцијативна контејнери су категорисани као:
- Неуређена мапа: колекција парова кључ/вредност који су хеширани коришћењем јединствених кључева.
- Неуређена вишемапа: колекција парова кључ/вредност која је хеширана помоћу кључева.
- Неуређен скуп: збирка јединствених кључева који су хеширани помоћу кључева.
- Неуређени вишеструки скуп: збирка кључева који су хеширани помоћу кључева.
Пример
Да би се илустровало како ан неуређени асоцијативни контејнер ради, користићемо неуређен скуп класе у овом примеру.
#инцлуде <иостреам>#инцлуде <унордеред_сет>
користећи простор имена стд;
инт маин ( )
{
// иницијализовати унордеред_сет од инт тип
унордеред_сет < инт > бројеви = { 10 , 2 , 16 , 70 , 5 } ;
// принт тһе комплет
цоут << 'Бројеви су: ' ;
за ( ауто & ја: бр )
{
цоут << и << ', ' ;
}
повратак 0 ;
}
Закључак
СТЛ Ц++ контејнер је објекат држач за чување колекције других објеката. Они раде слично шаблонима класа и подржавају велики број типова елемената. У овом водичу смо разговарали о најчешће коришћеним типовима СТЛ Ц++ контејнера, а то су секвенцијални контејнери, асоцијативни контејнери добро као неуређени асоцијативни контејнери .