wyklad11 STL wprowadzenie

background image

Standardowa biblioteka szablonów –

podstawowe cechy i elementy

2005/2006-2007/2010

Andrzej Walczak

background image

Składniki STL

• Ich podstawowy podział to: kontenery, iteratory,

algorytmy

• Kontenery służą do zarządzania kolekcjami

obiektów takiego samego typu. Realizowane są
jako tablice albo jako listy. Mogą także być
zorganizowane jako drzewa.

• Iteratory obsługują kolekcje kontenerów poprzez

wspólny interfejs. Jest on podobny do interfejsu
wskaźników.

• Algorytmy służą do wykonywania operacji na

elementach kolekcji. Mogą je modyfikować,
sortować, poddawać dowolnym
przekształceniom. Posługują się iteratorami ale
mogą definiować własne funkcje.

background image

Kontenery

• Tworzą dwa podstawowe typy: kontenery

sekwencyjne oraz kontenery asocjacyjne

• Kontenery sekwencyjne to: wektory, kolejki

dwustronne i listy

• Kontenery asocjacyjne to kolekcje sortowane, w

których pozycja elementu zależy wyłącznie od
jego wartości zgodnie z kryterium sortowania.
Wyróżniamy kontenery typu zbiór (set) ,
wielozbiór (multiset), mapa (map) oraz
wielomapa (multimap). Sortowanie w
kontenerze asocjacyjnym jest automatyczne.

background image

Kontener sekwencyjny -

wektor

• PRZYKŁAD

• #include <iostream.h>
• #include <vector>
• #include <conio.h>
• /////////////
• using namespace std;
• int main()
• {
• vector<int> dupa; // otwiera kontener
• //vector na liczby integer
• //wg szblonu klasy vector
• //nazwa kontenera jest dowolna

background image

//doklej elementy od 1 do 10

int i;

//nie musimy wprowadzac rozmiaru kolekcji jak

//przy tablicach

//rozmiar tworzony jest dynamicznie

for (i=1; i<=10; ++i){

dupa.push_back(i);// nazwa okresla obiekt szablonu klasy

}

//wypisz kolekcje

for (i=0;i<dupa.size();++i){

cout<<dupa[i]<<"\n";

} cout<<endl;

getch();

return 0;

}

background image

Przykład 2

#include <iostream.h>
#include <vector>
#include <conio.h>
/////////////
using namespace std;
int main()
{
vector<float> coll; // otwiera kontener
//vector na liczby float
//wg szblonu klasy vector
//nazwa kontenera jest dowolna

background image

int i;

//nie musimy wprowadzac rozmiaru kolekcji
jak

//przy tablicach

//rozmiar tworzony jest dynamicznie

for (i=1; i<=10; ++i){

coll.push_back(i*1.2);

}

//wypisz kolekcje

for (i=0;i<coll.size();++i){

cout<<coll[i]<<"\n";

}

cout<<endl;

getch();

return 0;

}

background image

Kontener sekwencyjny – lista

dwukierunkowa (deque=double

ended queue)

• Jest to dynamiczna tablica zorganizowana tak, aby zapisywanie

mogło się odbywać na każdym jej końcu

• PRZYKŁAD
• #include <iostream.h>
• #include <deque>
• #include <conio.h>
• /////////////
• using namespace std;
• int main()
• {
• deque<float> coll; // otwiera kontener
• //degue na liczby float
• //wg szablonu klasy degue
• //nazwa kontenera jest dowolna

background image

//doklej elementy od 1 do 10

int i;

//nie musimy wprowadzac rozmiaru kolekcji jak

//przy tablicach

//rozmiar tworzony jest dynamicznie

for (i=1; i<=10; ++i){

coll.push_front(i*1.2);/// FUNKCJA DOPISYWANIA NA POCZATEK
KOLEJKI

}

//wypisz kolekcje

for (i=0;i<coll.size();++i){

cout<<coll[i]<<"\n";

}

cout<<endl;

getch();

return 0;

}

background image

Kontener sekwencyjny – LISTA

• Jest to kontener sekwencyjny dwukierunkowy
• #include <iostream.h>
• #include <list>
• #include <conio.h>
• /////////////
• using namespace std;
• void main()
• {
• list<char> coll; // otwiera kontener
• //list na znaki
• //wg szablonu klasy list
• //nazwa kontenera jest dowolna
• //*******************************

background image

//nie musimy wprowadzac rozmiaru kolekcji

//jak przy tablicach

//rozmiar tworzony jest dynamicznie

for (char c='a'; c<='z'; ++c){

coll.push_back(c);}

while(!coll.empty()){

cout<<coll.front()<<' ';//zwraca pierwszy element

dla niepustej listy

coll.pop_front();}// usuwa pierwszy element

cout<<"\n"<<endl;

getch();

}

background image

Kontenery asocjacyjne

• Są nimi:
• Zbiory (set) – kolekcja elementów posortowanych

wg wartości. Każdy element może wystąpić tylko
raz.

• Wielozbiory (multiset)– j.w. Tylko wartości mogą

się powtarzać.

• Mapy(map) – to zbiory par klucz-wartość np..

Nazwa i kolejność jej wystąpienia. Elementy mapy
nie mogą się powtarzać.

• Multimapy (multimap) – j.w. Tylko pary klucz-

wartość mogą się powtarzać.

background image

Iteratory

• Jest to obiekt wyposażony w możliwość nawigowania po

elementach kolekcji kontenera.

• Operacjami iteratorów są:
• * zwraca element z aktualnej pozycji
• ++ przechodzi do nastepnego elementu
• ++ oraz != zwraca wartość logiczną o tym, czy elementy

maja te sama pozycję czy tez nie

• = przypisanie pozycji do której odnosi się iterator
• Funkcje kontenerowe: begin() – zwraca iterator

pokazujący początek elementów w niepustym kontenerze

• Funkcje kontenerowe: end() – zwraca iterator pokazujący

element za końcem elementów w niepustym kontenerze

background image

#include <iostream.h>

#include <list>

#include <conio.h>

using namespace std;

void main(){

list<char> coll; // otwiera kontener

for (char c='a'; c<='z'; ++c){

coll.push_back(c);}

list<char>::const_iterator pos;

for (pos=coll.begin();pos!=coll.end();++pos)

{cout<<*pos<<' ';}

cout<<"\n"<<endl;

getch();

}


Document Outline


Wyszukiwarka

Podobne podstrony:
Wykład 1 inżynierskie Wprowadzenie do zarządzania operacyjnego
1 Wyklad GK Wprowadzenie
Marketing - wyklad Nr 1 - Wprowadzenie, Zarządzanie, Wszystko
1 Filozofia wykład, informacje wprowadzające
WNoSM-notatki-wyklad 01-wprowadz, SKRYPTY, WNOSM
Wykład Informacje wprowadzające, Informatyka i Ekonometria SGGW, Semestr 5, Ekonometria
AKiSO SS wykład 6 ARM wprowadzenie
CAD Wyklad 01 Wprowadzenie
Wykład 1 inżynierskie Wprowadzenie do zarządzania operacyjnego
wyklad 01 wprowadzenie
Metodologia badań z logiką dr Izabela Krejtz wykład 6b Wprowadzenie do analizy regresji

więcej podobnych podstron