Ц ++ је један од најмоћнијих и застрашујућих програмских језика са којим бисте се могли сусрести као почетници. Разлог је прилично једноставан. Захтева пуно кода да би се постигао жељени излаз. Стандардна библиотека шаблона или СТЛ може вам помоћи да решите ову загонетку.
Узимајући у обзир количину времена и напора утрошеног током писања кода за функције попут сортирања и претраживања, СТЛ вам може помоћи да извршите све ове операције са само једним редом кода. Ова библиотека може бити изузетно корисна за решавање проблема и техничку припрему интервјуа.
Шта је стандардна библиотека шаблона?
Стандардна библиотека шаблона или СТЛ је Ц ++ библиотека која се састоји од унапред изграђених функција и контејнера. Укључује неке истакнуте класе шаблона за уобичајене структуре података као што су вектори, стекови, редови и неке корисне алгоритамске функције попут бинарног претраживања ради олакшавања програмирања.
Библиотека стандардних шаблона на језику Ц ++ састоји се од четири компоненте:
- Алгоритми
- Контејнери
- Функције
- Итераторе
Погледајмо алгоритме и контејнере дубље, јер су то најчешће коришћене компоненте СТЛ-а.
Алгоритми у СТЛ
Тхе датотека заглавља је део СТЛ-а који се састоји од неколико алгоритамских функција које се могу користити уместо ручног кодирања. Неки од укључених алгоритама су бинарно претраживање, сортирање и обрнуто, што је изузетно корисно.
За почетак морате да увезете заглавље у вашој Ц ++ датотеци. Синтакса је следећа:
#инцлуде
За будуће методе, узмите у обзир променљиву низа са вредностима {6, 2, 9, 1, 4} као пример.
инт арр [] = {6, 2, 9, 1, 4};
врста()
Тхе врста() функција вам помаже да сортирате све елементе унутар наведене структуре података у растућем редоследу. Ова функција узима два параметра: почетни итератор и завршни итератор.
Повезан: Увод у алгоритам сортирања стапања
Синтакса:
сортирање (старт_итератор, енд_итератор);
Ево кратког примера:
сортирање (арр, арр + 5);
за (инт и = 0; и <5; и ++) {
цоут << арр [и] << "";
}
Излаз:
1 2 4 6 9
обрнуто ()
Тхе обрнуто () функција обрће редослед елемената у наведеној структури података. Прихвата два параметра: почетни итератор и завршни итератор.
Синтакса:
обрнуто (старт_итератор, енд_итератор);
Ево кратког примера за горњу методу:
обрнуто (арр, арр + 5);
за (инт и = 0; и <5; и ++) {
цоут << арр [и] << "";
}
Излаз:
4 1 9 2 6
* мин_елемент () и * мак_елемент ()
Функције * мак_елемент () и * мин_елемент () врати максималну и минималну вредност унутар наведене структуре података, респективно. Обе ове функције прихватају два аргумента: почетни итератор и крајњи итератор.
Синтакса:
* мак_елемент (старт_итератор, енд_итератор);
* мин_елемент (старт_итератор, енд_итератор);
Откријмо које вредности ове функције враћају када их позову на примеру низа:
цоут << * мак_елемент (арр, арр + 5) << ендл;
цоут << * мин_елемент (арр, арр + 5) << ендл;
Излаз:
9
1
бинари_сеарцх ()
Тхе бинари_сеарцх () метода се користи за утврђивање да ли је наведена вредност присутна унутар структуре података или не. Прихвата три аргумента: почетни итератор, завршни итератор и вредност коју желите да пронађете.
Бинарна претрага ради само на сортираним структурама података. Због тога ћете морати да позовете врста() метода прво пре бинари_сеарцх () метода.
Синтакса:
бинарно_тражење (старт_итератор, енд_итератор, валуе_то_финд)
Ево демонстрације ове методе:
сортирање (арр, арр + 5);
бинарно_тражење (арр, арр + 5, 2)? цоут << "Елемент пронађен": цоут << "Елемент није пронађен";
бинари_сеарцх (арр, арр + 5, 7)? цоут << "Елемент пронађен": цоут << "Елемент није пронађен";
Излаз:
Елемент је пронађен
Елемент није пронађен
цоунт ()
Тхе цоунт () метода враћа број појављивања наведене вредности унутар структуре података. Потребна су три аргумента: почетни итератор, крајњи итератор и вредност за бројање.
Синтакса:
цоунт (старт_итератор, енд_итератор, валуе_то_цоунт);
Ево примера ове методе:
цоут << цоунт (арр, арр + 5, 2) << ендл;
Излаз:
1
Контејнери у СТЛ
Контејнери су структуре података које чувају објекте и податке. Вектори, листе, хрпе, редови, скупови и мапе су неки од примера који у њима чувају податке према наведеном примитивном типу података. Ове контејнере можете да користите увозом одговарајућих заглавља у датотеку Ц ++.
Док иницијализујете променљиву контејнера, морате да поменете примитивне податке као што је инт, цхар, низ унутар <> заграде.
Истражимо неке од ових контејнера детаљније:
Вецтор
Вектори су динамички низови који се могу променити и прилагодити за рад. Када уметнете или избришете елемент из вектора, он аутоматски прилагођава величину вектора. Ово је слично АрраиЛист структура података на Јави.
Синтакса:
#инцлуде
вектор име_променљиве;
Ево неколико важних векторских метода:
- пусх_бацк (вредност): Ова метода додаје податке вектору.
- поп_бацк (): Ова метода уклања последњи елемент из вектора.
- убаци (индекс, вредност): Ова метода убацује нове елементе пре елемента на наведеном положају.
- величина (): Ова метода враћа величину вектора.
- празно (): Ова метода проверава да ли је вектор празан или не.
- предњи (): Ова метода враћа прву вредност вектора.
- назад(): Метода повратак враћа последњу вредност вектора.
- на (индекс): Ова метода враћа вредност на наведеном положају.
- обриши (индекс): Метода брисања уклања елементе из датог индекса.
- јасно(): Ова метода брише све ставке у вектору.
вектор в = {23, 12, 56, 10};
в.пусх_бацк (5);
в.пусх_бацк (25);
в.поп_бацк ();
ауто и = в.инсерт (в.бегин () + 1, 7);
цоут << "Величина датог вектора" << в.сизе () << ендл;
иф (в.емпти ()) {
цоут << "Вектор је празан" << ендл;
} остало {
цоут << "Вектор није празан" << ендл;
}
цоут << "Елемент на првој позицији је" << в.фронт () << ендл;
цоут << "Елемент на последњој позицији је" << в.бацк () << ендл;
цоут << "Елемент на датој позицији је" << в.ат (4) << ендл;
в.ерасе (в.бегин () + 1);
за (инт и = 0; и цоут << в [и] << "";
}
Излаз:
Величина датог вектора 6
Вектор није празан
Елемент на првој позицији је 23
Елемент на последњој позицији је 5
Елемент на датој позицији је 10
23 12 56 10 5
Ред чекања
У структури података о реду, елементи се убацују са задње и бришу са предње стране. Отуда следи ФИФО („први улаз, први излаз“).
Синтакса:
#инцлуде
ред име_променљиве;
Ево неколико важних метода чекања:
- пусх (вредност): Овај метод додаје елементе у ред.
- поп (): Овај метод брише први елемент реда.
- величина (): Ова метода враћа величину реда.
- предњи (): Ова метода враћа први елемент реда.
- назад(): Ова метода враћа последњи елемент реда.
ред чекања к;
к.пусх (30);
к.пусх (40);
к.пусх (50);
к.пусх (60);
к.пусх (70);
цоут << "Први елемент је" << к.фронт () << ендл;
цоут << "Последњи елемент је" << к.бацк () << ендл;
цоут << "Величина реда је" << к.сизе () << ендл;
к.поп ();
цоут << "Штампање свих елемената реда" << ендл;
вхиле (! к.емпти ()) {
цоут << к.фронт () << "";
к.поп ();
}
Излаз:
Први елемент је 30
Последњи елемент је 70
Величина реда је 5
Штампање свих елемената реда
40 50 60 70
Гомила
Стацк контејнери раде по ЛИФО методи. ЛИФО је скраћеница од „последњи улазак, први излазак“. Подаци се гурају и искачу са истог краја.
Синтакса:
#инцлуде
гомила име_променљиве;
Ево неколико важних метода стека:
- пусх (вредност): Ова метода гура елемент у стеку.
- поп (): Ова метода брише горњи елемент стека.
- врх (): Ова метода враћа вредност последњег елемента унетог у стек.
- величина (): Ова метода враћа величину стека.
- празно (): Ова метода проверава да ли је стек празан или не.
стацк с;
с.пусх (30);
с.пусх (40);
с.пусх (50);
с.пусх (60);
цоут << "Врх стека садржи" << с.топ () << ендл;
с.поп ();
цоут << "Врх стека након извођења поп операције:" << с.топ () << ендл;
цоут << "Штампање свих елемената стека" << ендл;
вхиле (! с.емпти ()) {
цоут << с.топ () << "";
с.поп ();
}
Излаз:
Врх стека садржи 60
Врх стека након извођења поп операције: 50
Штампање свих елемената стека
50 40 30
Комплет
Контејнери за сет користе се за чување јединствених вредности и вредност елемента не може се променити након што се убаци у скуп. Сви елементи у скупу чувају се сортирано. Постављени контејнер је сличан поставити структуру података у Питхон-у.
Синтакса:
#инцлуде
комплет име_променљиве;
Ево неколико важних постављених метода:
- убаци (вредност): Ова метода убацује елементе у скуп.
- почети(): Ова метода враћа итератор првом елементу скупа.
- крај(): Ова метода враћа итератор на последњи елемент скупа.
- величина (): Ова метода враћа величину скупа.
- празно (): Овај метод проверава да ли је скуп празан или не.
- пронађи (вредност): Ова метода враћа итератор елементу прослеђеном у параметру. Ако елемент није пронађен, ова функција враћа итератор на крај скупа.
- обриши (вредност): Овај метод је избрисао наведени елемент из скупа.
сет с;
с.инсерт (20);
с.инсерт (30);
с.инсерт (40);
с.инсерт (50);
с.инсерт (60);
с.инсерт (60);
с.инсерт (60);
ауто и = с.бегин ();
цоут << "Елемент на првој позицији" << * и << ендл;
цоут << "Величина скупа" << с.сизе () << ендл;
с.финд (20)! = с.енд ()? цоут << "Елемент је пронађен" << ендл: цоут << "Елемент није пронађен" << ендл;
с.ерасе (30);
цоут << "Штампање свих елемената" << ендл;
фор (ауто и = с.бегин (); и! = с.енд (); и ++) {
цоут << * и << "";
}
Излаз:
Елемент на првој позицији 20
Величина комплета 5
Елемент је пронађен
Штампање свих елемената
20 40 50 60
Ц ++ не мора бити тежак
Као и свака друга вештина, вежбање је од суштинске важности да бисте најбоље искористили СТЛ. Ови контејнери и алгоритми могу вам помоћи да уштедите пуно времена и једноставни су за употребу. Започните са вежбањем горе приказаних примера и на крају ћете почети да га користите и у својим пројектима.
Међутим, ако ово први пут учите Ц ++, почните са учењем основа пре него што наставите да разумете СТЛ.
Желите да научите Ц ++? Овде су најбоље веб странице и онлајн курсеви за Ц ++ за почетнике и искусне програмере.
Прочитајте следеће
- Програмирање
- Водичи за кодирање
- Функционално програмирање
Нитин је страствени програмер и студент рачунарског инжењерства који развија веб апликације користећи ЈаваСцрипт технологије. Ради као слободни веб програмер и у слободно време воли да пише за Линук и програмирање.
Претплатите се на наш билтен
Придружите се нашем билтену за техничке савете, прегледе, бесплатне е-књиге и ексклузивне понуде!
Још један корак…!
Молимо потврдите своју адресу е-поште у е-поруци коју смо вам управо послали.