Programmer’s Reference


ГЛАВА 14 – Стандартната библиотека с шаблони на С++



страница14/19
Дата21.09.2016
Размер2.35 Mb.
#10416
1   ...   11   12   13   14   15   16   17   18   19

ГЛАВА 14 – Стандартната библиотека с шаблони на С++

Едно от главните постижения които станаха през стандартизационния процес на С++ беше включването на стандартната библиотека с шаблони или STL . STL предоставя общо предназначени , шаблонни класове и функции които изпълняват множество популярни и общо използвани алгоритми и структури за данни . Например , тя включва поддръжка на вектори , списъци , опашки и стекове . Тя също дефинира и разнообразни начини за достъп до тях . Понеже STL е изградена от шаблонни класове , алгоритмите и структурите за данни могат да бъдат приложени към почти всеки тип данни . STL е голяма библиотека и не всички от нейните качества могат да бъдат пълно описани в тази книга . Също версията на STL описана тук е тази определена от стандартизационния комитет ANSI / ISO . Вашия компилатор може да предоставя по – различна версия на STL , така че трябва да проверите неговата документация .


Преглед на контейнери , алгоритми и

итератори


STL е съставена от три компонента : контейнери , алгоритми и итератори . Те работят заедно за да доставят основни решения за разнообразни програмни проблеми . Всеки е описан кратко тук .

Контейнери


Контейнерите са обекти които съдържат други обекти . Има няколко различни типа контейнери . Например класа vector дефинира динамичен масив , queue създава опашка и list изгражда линеен списък . В добавка към основните контейнери STL също дефинира и асоциативни контейнери които позволяват ефикасно получаване на стойности базирани на ключове . Например , map доставя достъп до стойности с уникални ключове . По този начин map съхранява двойк ключ / стойост и позволява стойността да бъде върната чрез подаване на нейния ключ . Всеки контейнерен клас дефинира множество от функции които могат да бъдат приложени към контейнера . Например , list контейнера включва функции които вмъкват , изтриват и сливат елементи .

Алгоритми


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

Итератори


Итераторите са обекти които са повече или по – малко указатели . Те дават възможност да имаме достъп до съдържанието на контейнер по много подобен начин при който използваме указател за достъп до масив . Има 5 типа итератори :

Итератор Разрешен достъп

Произволен достъп Съхранява и извлича стойности; елементите могат да бъдат

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



Двупосочен Съхранява и извлича стойности;

движение напред и назад



Прав Съхранява и извлича стойности;

движение само напред



Входен Извлича , но не съхранява стойности ; движение само напред

Изходен Съхранява , но не извлича стойности ; движение само напред

Най – общо итератор който има най – големи възможности за достъп може да бъде използван на мястото на такъв със по – малки възможности . Например правия итератор може да бъде използван на мястото на входния . Итераторите се манипулират като указатели . Може да се увеличават и намаляват . Може да се прилага оператора * към тях . Итераторите са декларирани чрез използване на типа iterator дефиниран за различни контейнери . Когато се отнася за различните типове контейнери общо , тази книга използва следните имена :



Име Представя

BiIter Двупосочен итератор

ForIter Прав итератор

InIter Входен итератор



OutIter Изходен итератор

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

достъп


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

Алокатори


Всеки контейнер дефинира за себе си алокатор , който е обект от клас allocator . Алокаторите управляват заделянето на памет когато се създава нов контейнер

Предикати и сравнителни функции


Някои от алгоритмите и контейнерите използват специален тип функции наречени предикати . Има две вариации на предикатите - унарни и бинарни . Унарния предикат приема един аргумент . Бинарния приема два аргумента . Тези функции връщат резултат true / false . Но точното условие което ги кара да върнат true или false се дефинира от вас . В следващите описания , когато се изисква унарна предикатна функция , тя ще се означава чрез типа UnPred . Когато се изисква бинарен предикат ще използваме типа BinPred . В бинарния предикат , аргументите са винаги в ред първи , втори отнасящи се за функцията която извиква предиката . И за двата предиката , аргументите ще съдържат стойности от типа на обектите които се съхраняват в контейнер . Някои алгоритми и класове използват специален тип бинарен предикат който сравнява два елемента . Сравняващите функции връщат true ако техния първи аргумент е по – малък от втория . Сравняващите функции ще ги представяме чрез типа comp .

Инструменти и функционални хедъри


В добавка към хедърите изисквни от различните класове на STL стандартната библиотека на С++ включва < utility > и < functional > хедъри , които доставят поддръжка за STL . Например в < utility > е дефиниран шаблонния клас pair , който може да съдържа двойка от стойности . Шаблонната функция less ( ) декларирана във < functional > определя кога един обект е по – малък от друг . Шаблоните във < functional > ви позволяват да изградите обекти които дефинират operator( ) . Те са наречени функционални обекти и могат да бъдат използвани на мястото на указателите към функции на много места . Те са извън обсега на този бърз справочник за да ги описваме .

Каталог: books
books -> Тайнствената сила на пирамидите Богомил Герасимов Страхът на времето
books -> В обятията на шамбала
books -> Книга се посвещава с благодарност на децата ми. Майка ми и жена ми ме научиха да бъда мъж
books -> Николай Слатински “Надеждата като лабиринт” София, Издателство “виденов & син”, 1993 год
books -> София, Издателство “Българска книжница”, 2004 год. Рецензенти доц д. ик н. Димитър Йончев, проф д-р Нина Дюлгерова Научен редактор проф д-р Петър Иванов
books -> Николай Слатински “Измерения на сигурността” София, Издателство “Парадигма”, 2000 год
books -> Книга 2 щастие и успех предисловие
books -> Превръщане на числа от една бройна система в друга
books -> Тантриското преобразяване


Сподели с приятели:
1   ...   11   12   13   14   15   16   17   18   19




©obuch.info 2024
отнасят до администрацията

    Начална страница