You are on page 1of 17

C++ напредно

8. STL Стандардна библиотека на


шаблони во С++ - 1
Д-р. Рамона Маркоска, вонр.проф.

www.ramona-markoska.info
Содржина
—  STL намена
—  Составни елементи
— Контејнери
—  Vector
—  String
—  Deque
— Итератори - 2
— Алгоритми - 2
—  Специфични примери на примена
STL библиотека на темплејти во С++

—  Дефиниција/опис: множество на алатки на


располагање во различни категории, со можност да
бидат применети врз разни типови на податоци
—  Намена- code reuse, т.е. да спречи редундантност на
код, во ситуации кога една иста активност, функција,
алгоритам, може да се користи врз различни податоци.
!!! За ситуации кога се разликуваат само влезните
податоци, и вредностите кои се враќаат, функциите
може да се поопштат на ниво на шаблони, во кои по
автоматизам ќе бидат генерализирани и типот и
вредноста која се враќа.
пример:


Елементи на STL
—  Контејнери - податочни форми - структури на
податоци во кои може да се чуваат податоци од
најразличен тип. Се повикуваат преку соодветни
хедери и датотеки
—  Итератори – покажувачи кон елементите на
контејнерите. Исто како и обични, служат за
движење низ податоците или означување- избор на
податоци врз кои ќе се врши некоја активност.
—  Алгоритми – обработка врз податоци, скратена и
олеснета примена на одредени често употребувани
процедури на обработка на податоци.

Пример :Намена и смисол на STL- пример

int, double, titula

Т внесено во самиот
шаблон,
по потреба, целобројна,
реална, или класа, или
било кој друг тип на
податок
Кoнтејнери – Vector
•  Појаснување: Заради обемноста и сложеноста, начините на употреба и параметрите,
релациите со преостанатите елементи, ќе бидат појаснети преку еден од најкористените
контејнери, Vector, до чии опции се пристапува преку заглавието <vector>.
•  std :: vector
template < class T, class Alloc = allocator<T> > class vector;

•  Vector најденоставен контејнер, кој претставува воопштување на низите, во смисол


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

•  Својства:
•  Секвенцијален каркатер-Строго зададен линеарен редослед, кој може да се
користи во постапки на пристап до елементите
•  Динамичка низа- овозможува манипулација со елементите, во случај на потреба
на преуредување и проширување на основната низа
•  Аколација на меморија- посебен објект алокатор и модел, за динамичка алокација
на меморија за потребите на низата
•  Параметри : T тип на елементи, Alloc- манипулација, алокација со меморија
•  Дополнување - NP.7.vector.C++reference
Member types на Vector

•  Манипулација со содржина на контејер глобално,


•  Поединечен пристап до елементи,
•  Модификатори
Member functions. Vector
Member functions. Vector

Пример – користење на Vector
Програма во која се генерира листа од цели броеви според даден критериум
и потоа се подредува по големина

2,3 повикување на
хедери
10 ф-ја за
последовалтено
полнење на
контејнерот,
(push_back )
според формулата
16- повикување
на ф-ја за
сортирање, со
наведување на
границите од
почеток до крај
(sort,
. begin() .end())
Пример – користење на Vector 2
13 – дадена е како
коментар низата
која се генерира со
pow(i , 3)%20,
редоследно со
промената на i .

18 – v.size() познато
од претходни
задачи, димензија
на низа.
sort (ранг) дел од
библиотека за
алгоритми,
http://
www.cplusplus.com/
reference/algorithm/ ,
детално покасно
Придружување на итератор и
операции со него
Контејнери – String

•  Проширување и посебен вид на vector <char>


•  Намена : работа со текстуални податоци
•  sstream
•  istringstream – третман на влезни податоци како да
се влезен поток
•  ostringstream – запишување на податоци во
текстуална низа и третман како да се излезен
поток
•  Можност за претворање од контејнер во
стандардна низа c_str()
•  Примери
Kонтејнери – String 01
Покрај
стандардниот
оператор + ,
функции
Се користат и
append()
push_back(), за
додавање на
нови
содржини на
крај и
пресметување
на големината
size()
Kонтејнери – String 02

Користење на
substr(), за
пристап и
прикажување
на одреден
интервал и
промена на
почетна
позиција на
стринг. Да се
спореди со
покажувачи !
Deque v.d. Vector
§  Контејнери со динамички
променливи, со кои, за разлика од
вектор, може да им се пристапува
и да се менуваат од двата краја.
§  Ја имаат истата функционалност
на вектор, надополнета
§  Посложени и поефикасни, за
стрингови и низи кои брзо се
менуваат (по вредности, или по
број/ се појавуваат нови или
бришат постоечки ).

Алтернатива на strcmp, преку користење на алгоритам за


сортирање, за наведени граници на низата од стрингови, која
е со променлива големина и содржина, и за која се врши
обработка од двата краја.
Материјали за работа
http://www.cplusplus.com/reference/stl/
http://www.cplusplus.com/reference/vector/vector/
http://mendo.mk Стандардна библиотека на шаблони 1,2,

http://www.cplusplus.com/reference/deque/deque/

You might also like