Стандардна библиотека шаблона

Стандардна библиотека шаблона (енг. Standard Template Library (STL)) је софтверска библиотека програмског језика C++ која је делимично укључена у С++ стандардну библиотеку. Обезбеђује четири компоненте: контејнере, итераторе, алгоритме и функторе.

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

STL остварује резултате кроз употребу шаблона. Овај приступ обезбеђује полиморфизам времена компајлирања који је често ефикаснији од традиционалног полиморфизма времена покретања. Модерни C++ преводиоци подешени су тако да минимализују било какву казну апстракције насталу интензивном употребом STL-а.

STL је настао као прва библиотека генеричких алгоритама и структура података за C++, са четири идеје на уму: генеричко програмирање, апстракција без губитка ефикасности, фон Нојманова архитектура и вредносна семантика.

Композиција

Контејнери

STL садржи секвенцијалне контејнере и асоцијативне контејнере. Стандардни секвенцијални контејнери су: низ, ред са два краја, и листа. Стандардни асоцијативни контејнери су: скуп, мултискуп, мапа (асоцијативни низ) и мултимапа. Постоје такође и адаптери контејнера: ред, ред са приоритетом и стек, што су контејнери са специфичним интерфејсом, који користе друге контејнере као имплементацију.

Контејнер Опис
Једноставни контејнери
пар (pair) Пар контејнер је једноставни асоцијативни контејнер који се састоји од уређеног пара елемената, са именима 'први' и 'други', тим редоследом. STL пар се може доделити, копирати и поредити.
Секвенце (низови/повезане листе): уређене колекције
низ (vector) динамички низ, као С низ (могућност случајног приступа), са способношћу аутоматске промене величине при убацивању или брисању објекта. Убацивању/брисању елемента на крај/са краја низа потребно је константно време. Убацивање/брисање на почетак/са почетка (у средину/из средине) захтева линеарно време.
листа (list) двоструко повезана листа; супротан перформанс од низа. Спора претрага и приступ (линеарно време), али кад се пронађе позиција, брзо убацивање и брисање (константно време).
ред са два краја (deque) низ са убацивањем/брисањем на почетак или крај/са почетка или краја у константном времену.
Асоцијативни контејнери: неуређене колекције
скуп (set) математички скуп; убацивање/брисање елемената чува итераторе. Обезбеђене су скуповне операције унија, пресек, разлика, симетрична разлика и тест инклузије.
мултискуп (multiset) исто као скуп, с тим што дозвољава дупликате елемената (математички мултискуп)
мапа (map) асоцијативни низ; обично се имплементира коришћењем самобалансирајућег бинарног стабла претраге
мултимапа (multimap) исто као мапа, с тим што дозвољава дупликате кључева

Итератори

STL имплементира пет различитих типова итератора. То су улазни итератори (који могу да се користе само за читање низа вредности), излазни итератори (који могу да се користе само за испис низа вредности), forward итератори (који се могу читати, у које се може писати и који се могу померати напред), двосмерни итератори (који су као forward итератори, само што се могу такође померати назад) и итератори са случајним приступом (који се слободно могу померати неодређени број корака у једној операцији).

Могуће је да се двосмерни итератори понашају као итератори са случајним приступом, тако што, на пример, померање напред за десет корака може бити остварено померањем напред десет пута за по један корак. Ипак, коришћење различитих итератора са случајним приступом нам нуди предности што се тиче ефикасности. На пример, низ може да има итератор са случајним приступом, али листа само двосмерни итератор.

Итератори представљају главну карактеристику која омогућава општу примену STL-а. На пример, алгоритам који обрће низ може се имплементирати коришћењем двосмерних итератора, и онда се иста имплементација може применити на листе и редове са два краја. Контејнери направљени од стране корисника би требало једино да обезбеде итератор који имплементира један од пет стандардних итераторских интерфејса, и сви алгоритми обезбеђени STL-ом могу се применити на контејнер.

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

Алгоритми

Велики број алгоритама за извршавање операција као што су претрага и сортирање обезбеђени су у STL-у, сваки имплементиран тако да захтева одређени ниво итератора (и зато ће радити на било ком контејнеру који обезбеђује везу ка итераторима).

Функтори

STL садржи класе које оптерећују функцију оператор (operator()). Инстанце таквих класа зову се функтори или функцијски објекти. Функтори дозвољавају параметризацију понашања функције (на пример кроз аргументе прослеђене функторском конструктору).

Историјат

Архитектура STL-а је већински креација Александра Степанова. 1979. године он је почео да разрађује своје почетне идеје генеричког програмирања и да истражује њихов потенцијал за развој софтвера. Иако је Дејвид Масер развио и бранио неке аспекте генеричког програмирања још 1971. године, оно је било ограничено на специјализованију област развоја софтвера (рачунска алгебра).

Степанов је препознао пун потенцијал генеричког програмирања и убедио тадашње колеге из General Electric Research and Development-a (укључујући, првобитно, Дејвида Масера и Дипака Капура) да би генеричко програмирање требало да буде вођено као основа развоја софтвера. У оно време није постојала реална подршка за генеричко програмирање ни на једном програмском језику.

Први већи језик који обезбеђује такву подршку био је Ada, са својим генеричким јединицама. 1985. године, програмски језик Eiffel постао је први објектно-оријентисан који укључује битну подршку за генеричке класе, комбиновану са идејом наслеђивања из објектно-оријентисаног програмирања. До 1987. Степанов и Масер су развили и објавили Ada библиотеку за процесирање листа која је садржала резултате већине њихових истраживања на тему генеричког програмирања. Међутим, Ada није достигла одобравање ван одбрамбене индустрије и C++ је био прикладнији за ширу употребу и обезбеђивање подршке за генеричко програмирање, иако је као језик био релативно нов. Други разлог за окретање С++-у, који је Степанов одмах препознао, био је С/С++ модел рачунања који дозвољава веома флексибилан приступ коришћења показивача, који је кључан за постизање општости без губитка ефикасности.

Било је потребно више истраживања и експериментисања, не само за развијање индивидуалних компоненти, већ и за развијање целокупне архитектуре саставне библиотеке засноване на генеричком програмирању. Прво у AT&T Беловим лабораторијама, касније и у Hewlett-Packard Research лабораторијама, Степанов је експериментисао са мноштвом архитектонских и алгоритамских формулација, прво у С-у, касније и у С++-у. Масер је сарађивао у овом истраживању и 1992. године Менг Ли се придружио Степановом пројекту у HP и постао главни сарадник.

Овај рад би се несумњиво наставио на неко време као истраживачки пројекат или би, у најбољем случају, завршио у HP власничкој библиотеци, да Ендру Кениг из Белових лабораторија није постао свестан тог рада и питао Степанова да презентује главне идеје на састанку ANSI/ISO одбора за С++ стандардизацију, у новембру 1993. Одговор одбора био је веома повољан.

Одбор је имао неколико захтева за промене и екстензије, и мала група његових чланова срела се са Степановим и Лијем ради пружања помоћи око разраде детаља. Захтеви за најзначајнију екстензију (асоцијативни контејнери) морали су да се покажу конзистентним, што је урађено њиховом потпуном имплементацијом, посао који је Степанов предао Масеру. Степанов и Ли произвели су предлог који је коначно одобрен на састанку ANSI/ISO одбора у јулу 1994.

Референце

  • Alexander Stepanov and Meng Lee, The Standard Template Library. HP Laboratories Technical Report 95-11(R.1), 14 November 1995. (Revised version of A. A. Stepanov and M. Lee: The Standard Template Library, Technical Report X3J16/94-0095, WG21/N0482, ISO Programming Language C++ Project, May 1994.)
  • Alexander Stepanov (2007). Notes on Programming. Stepanov reflects about the design of the STL.
  • Nicolai M. Josuttis . The C++ Standard Library: A Tutorial and Reference. Addison-Wesley. 2000. ISBN 978-0-201-37926-6.
  • Scott Meyers . Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library. Addison-Wesley. 2001. ISBN 978-0-201-74962-5.
  • David Vandevoorde and Nicolai M. Josuttis . C++ Templates: The Complete Guide. Addison-Wesley Professional. 2002. ISBN 978-0-201-73484-3.
  • Atul Saini and David R. Musser (1996). STL Tutorial and Reference Guide: C+ + Programming with the Standard Template Library. Foreword. Addison-Wesley. ISBN 978-0-201-63398-6. 

Read other articles:

«   رسالة يوحنا الثالثة   » عدد الإصحاحات 1 الكاتب وفق التقليد يوحنا تاريخ الكتابة المتوقع من 85م إلى 90م مكان الكتابة المتوقع أفسس تصنيفه 25 نص رسالة يوحنا الثالثة في ويكي مصدرمكتبة النصوص المجانية جزء من سلسلة مقالات حولأسفار العهد الجديد الأناجيل الأناجيل م...

 

في دراسة علم مقارنة الأديان، تعرف أديان شرق آسيا أو الأديان الطاوية بأنها مجموعة فرعية من الأديان الشرقية. تشمل هذه المجموعة الأديان الصينية بالعموم، التي تشمل عبادة الأسلاف والدين الصيني الشعبي والكونفوشيوسية والطاوية، وما يدعى بالمنظمات الخلاصية (مثل ييغوانداو والويكس

 

Ivan Bojničić-Kninski (von Theodor Mayerhofer, 1894) Ivan Bojničić (* 24. Dezember 1858 in Valpovo, Slawonien; † 11. Juni 1925 in Zagreb) war ein Jurist, Archivdirektor und Heraldiker. Inhaltsverzeichnis 1 Leben 2 Werke (Auswahl) 3 Literatur 4 Weblinks Leben Bojničić absolvierte ein Studium der Rechtswissenschaft in Osijek, Budapest und Wien. Er promovierte zum Doktor der Philosophie. Von 1879 bis 1894 war er Kustos der archäologischen Abteilung des kroatischen Nationalmuseums. Ab 18...

البنك التجاري اليمنيالبنك التجاري اليمنيالشعارمعلومات عامةالجنسية اليمن التأسيس 1993مالنوع مؤسسة ماليةالمقر الرئيسي صنعاء -  اليمنموقع الويب YCB.com.ye المنظومة الاقتصاديةالنشاط مصرف تجاريتعديل - تعديل مصدري - تعديل ويكي بيانات البنك التجاري اليمني هو أحد المؤسسات المصرفي...

 

Stadion Energa GdańskPGE Arena GdańskInformasi stadionNama lengkapStadion Energa GdańskNama lamaPGE ArenaPemilikKota GdańskLokasiLokasiul. Pokoleń Lechii Gdańsk 1, 80-560 Gdańsk, PolandiaKonstruksiMulai pembangunan2008Dibuat2008 - 2011Dibuka14 Agustus 2011Biaya pembuatan775 juta PLNArsitekRKW Rhode Kellermann WawrowskyInsinyur strukturBollinger+GrohmannData teknisPermukaanRumputKapasitas43,615Ukuran lapangan105 x 68 meterPemakaiEuro 2012 Lechia Gdańsk Stadion Energa Gdańsk, sebelumny...

 

Baseball player Louis SantopSantop in 1924CatcherBorn: (1889-01-17)January 17, 1889Tyler, TexasDied: January 22, 1942(1942-01-22) (aged 52)Philadelphia, PennsylvaniaBatted: LeftThrew: RightNegro leagues debut1909, for the Philadelphia GiantsLast appearance1926, for the Hilldale Daisies Teams Oklahoma Monarchs (1910) Philadelphia Giants (1911) New York Lincoln Giants (1911–1914)[1] New York Lincoln Stars (1916) Brooklyn Royal Giants (1916–1919) Hilldale Clu...

MasamuneMasamune in October 2016Born (1974-08-16) August 16, 1974 (age 49)Sendai, Miyagi, JapanProfessional wrestling careerRing name(s)Dragon FuriaFuria del DragonMasamuneRakute MasamuneBilled height1.73 m (5 ft 8 in)[1]Billed weight78 kg (172 lb)[1]Trained byLizmark[2]DebutApril 1999[1] Masamune (政宗, Masamune)[3] (born August 16, 1974) is a masked Japanese professional wrestler. He currently works for Dotonbori Pro Wr...

 

Railway station in Toyama, Toyama Prefecture, Japan Toyama Station富山駅The south side of Toyama Station in December 2016General informationLocation1-227 Meirinchō, Toyama-shiToyama PrefectureJapanOperated by JR West Ainokaze Toyama Railway Toyama Chihō Railway Line(s) Hokuriku Shinkansen Takayama Main Line Ainokaze Toyama Railway Line Toyama Chiho Railway Fujikoshi Line, Main Line, Tateyama Line (3 lines at Dentetsu-Toyama) Toyamakō Line (Toyama-Ekimae Toyamaeki-Kita) HistoryOpened20&#...

 

L'Amour au Théâtre-Italien, détail du tableau par Antoine Watteau. Comédie-Italienne ou Théâtre-Italien sont des noms qui ont été utilisés pour les pièces de théâtre de langue italienne lorsqu'elles ont été jouées par de nombreuses troupes en France, notamment à Paris. Les premières visites enregistrées par des acteurs italiens étaient des troupes de la commedia dell'arte employées par la cour des reines Catherine de Médicis et Marie de Médicis. Ces troupes ont égalemen...

Dubai based newscaster This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Al Arabiya English – news · newspapers · books · scholar · JSTOR (September 2016) (L...

 

Chinees basketbalteam Land China FIBA-rang 29e (2 maart 2021) FIBA-toetreding 1970 FIBA-zone FIBA Azië Coach Li Nan Olympische Spelen Deelnames 9 Medailles 0 Wereldkampioenschap Deelnames 9 Medailles 0 Aziatische kampioenschap Deelnames 22 Medailles Goud: 1975, 1977, 1979, 1981, 1983, 1987, 1989, 1991, 1993, 1995, 1999, 2001, 2003, 2005, 2011, 2015 Zilver: 2009 Brons: 1985, 1997 Tenues     Thuiskleuren     Uitkleuren Portaal    Basketbal Het Chinees nationaal ba...

 

This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: Jacob Blaustein Institutes for Desert Research – news · newspapers · books · scholar · JSTOR (August 2022) (Learn how and when to remove this template message) The Jacob Blaustein Institutes for Desert ResearchEstablished1974Parent institutionBen-Gurion University of the NegevDirectorNoam WeisbrodAcademic ...

Upazila in Khulna, BangladeshFakirhat ফকিরহাটUpazilaCoordinates: 22°46.8′N 89°42.5′E / 22.7800°N 89.7083°E / 22.7800; 89.7083Country BangladeshDivisionKhulnaDistrictBagerhatArea • Total160.68 km2 (62.04 sq mi)Population (2011) • Total137,789 • Density860/km2 (2,200/sq mi)Time zoneUTC+6 (BST)WebsiteOfficial Map of Fakirhat Fakirhat (Bengali: ফকিরহাট) is a Upazila (sub-d...

 

Office skyscraper in Manhattan, New York 1585 BroadwayMorgan Stanley BuildingGeneral informationTypeOfficeLocation1585 BroadwayManhattan, New York, USCoordinates40°45′36″N 73°59′08″W / 40.76000°N 73.98556°W / 40.76000; -73.98556Current tenantsMorgan StanleyConstruction started1989Completed1990OwnerMorgan StanleyHeightRoof685 ft (209 m)Technical detailsFloor count42Floor area1,336,576 sq ft (124,172.0 m2)Design and constructionArchit...

 

BalgandharvaPosterNama lainबालगंधर्वSutradaraRavi JadhavProduserNitin Chandrakant DesaiDitulis olehAbhiram BhadkamkarPemeranSubodh Bhave Vibhavari Deshpande Kishor Kadam Avinash NarkarPenata musikKaushal InamdarSinematograferMahesh LimayePenyuntingPrashant KhedekarDistributorShringar FilmsTanggal rilis 6 Mei 2011 (2011-05-06) Durasi124 menitNegaraIndiaBahasaMarathiAnggaran₹ 70,000,000[1] Balgandharva adalah sebuah film biografi Marathi tentang sala...

1931 film The Man in Search of His MurdererGermanDer Mann, der seinen Mörder sucht Directed byRobert SiodmakWritten by Ernst Neubach (play) Ludwig Hirschfeld [de] Curt Siodmak Billy Wilder Produced byErich PommerStarringHeinz RühmannLien DeyersHans LeibeltCinematographyOtto BaeckerKonstantin Irmen-TschetEdited byViktor GertlerMusic byFriedrich HollaenderFranz WaxmanProductioncompanyUFADistributed byUFARelease date 5 February 1931 (1931-02-05) Running time97 minut...

 

Extinct genus of lizards HelodermoidesTemporal range: Oligocene Fossil of Helodermoides tuberculatus Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Chordata Class: Reptilia Order: Squamata Family: Anguidae Clade: †Glyptosaurini Genus: †HelodermoidesDouglass, 1903 Type species †Helodermoides tuberculatusDouglass, 1903 Helodermoides is an extinct genus of anguid lizards from the Oligocene of North America. The genus is monotypic, including only the species Helodermo...

 

O sală de jocuri este o unitate de jocuri care oferă exclusiv jocuri de cărți pentru jocul public. Termenul cameră de poker este folosit pentru a descrie o cameră dedicată în cazinouri care este dedicată jocului de poker și în funcție este similară cu o cameră de cărți. Astfel de camere nu oferă în mod obișnuit sloturi sau video poker sau alte jocuri de masă, cum ar fi craps-ul sau ruletă, așa cum se întâlnesc în cazinouri. Cu toate acestea, un cazinou va folosi adese...

この項目では、バスケットボール選手について説明しています。同音異字の声優については「石川界人」をご覧ください。 石川 海斗Kaito Ishikawa 日立時代信州ブレイブウォリアーズ  No.11ポジション PG基本情報愛称 カイト日本語 石川 海斗国籍 日本生年月日 (1990-11-30) 1990年11月30日(33歳)出身地  東京江東区身長 171cm (5 ft 7 in)体重 72kg (159 lb)...

 

Prisons maintained by the Catholic Church Part of a series on theCanon law of theCatholic Church Ius vigens (current law) 1983 Code of Canon Law Omnium in mentem Magnum principium Code of Canons of the Eastern Churches Ad tuendam fidem Ex corde Ecclesiae Indulgentiarum Doctrina Praedicate evangelium Veritatis gaudium Custom Matrimonial nullity trial reforms of Pope Francis Documents of the Second Vatican Council Christus Dominus Lumen gentium Optatam totius Orientalium ecclesiarum Presbyteror...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!