STL
From Wikipedia, the free encyclopedia
Remove ads
STL (съкр. от Standard Template Library – Стандартна библиотека с шаблони)
е софтуерна библиотека, отчасти включена в стандартната библиотека на езика С++.
STL предоставя удобен начин за работа с контейнери, итератори, алгоритми и функтори. STL съдържа готови класове за работа с основни структури от данни
(стек, опашка, дек, списък, граф и др.)
За информацията в тази статия или раздел не са посочени източници. Въпросната информация може да е непълна, неточна или изцяло невярна. Имайте предвид, че това може да стане причина за изтриването на цялата статия или раздел. |
Remove ads
Съдържание
Контейнери:
Итератори:
Итераторите са подобни на указателите.
Има пет типа итератори:
- Входни (input) – могат да бъдат използвани само за четене на последователност от стойности.
- Изходни (output) – могат да бъдат използвани само за писане на последователност от стойности.
- Еднопосочни (forward) – могат да бъдат използвани за четене и писане; движението е само напред.
- Двупосочни (bidirectional) – могат да бъдат използвани за четене и писане; разрешават движение и напред, и назад.
- Итератори със свободен достъп (random access) – разрешават достъп до произволен елемент.
Двупосочните итератори имат същите възможности като итераторите със свободен достъп. Например преместването десет стъпки напред може да бъде представено като десет премествания с една стъпка напред. В общия случай обаче итераторите със свободен достъп работят по-бързо от двупосочните. Например един vector може да има итератор със свободен достъп, но един списък (list) може да има само двупосочен итератор.
Итераторите са главното средство на библиотеката STL да бъде всеобхватна. Например един алгоритъм за обръщане на редица може да бъде програмиран с помощта на двупосочни итератори и след това да бъде използван за контейнерите list, vector и deque. Създаден от потребителя контейнер трябва само да предостави итератор (един от петте вида) и всички алгоритми в STL ще могат да бъдат използвани за този контейнер.
Тази универсалност си има своята цена. Например търсенето в асоциативен контейнер, като map или set, може да бъде много по-бавно, ако се използват итератори, отколкото ако се викат методите на самия контейнер. Методите на контейнера познават вътрешната структура на контейнера и могат да се възползват от това. Тази информация е недостъпна за алгоритмите, използващи итератори.
Алгоритми:
Функтори:
Remove ads
Примери
Сортиране на елементите на вектор:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
vector<int>v(5);
for(int i=0;i<v.size();i++)
v.push_back(i+1);
cout<<"Големината на вектора е: "<<v.size()<<endl;
cout<<"Елементите на вектора в обратен ред: ";
while(!v.empty()) {
cout<<v.back()<<" ";
v.pop_back();
}
v.push_back(3);
v.push_back(2);
v.push_back(7);
v.push_back(5);
v.push_back(9);
sort(v.begin(),v.end());
cout<<"Елементите в нарастващ ред:"<<endl;
while(!v.empty()) {
cout<<v.front()<<" ";
v.erase(v.begin());
}
system("pause");
return 0;
}
Remove ads
Още за STL
- www.infosys.tuwien.ac.at Архив на оригинала от 2007-12-23 в Wayback Machine.
- www.sgi.com
- www.infoman.musala.com[неработеща препратка]
- www.judge.openfmi.net Архив на оригинала от 2008-01-24 в Wayback Machine.
- STL Reference STL контейнери и членовете им
- C/C++ reference секция за STL
- „Практически самоучител на C++“ на Хърб Шилдт
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads