Standardowa biblioteka szablonów (STL)

Nasza ocena:

4
Pobrań: 14
Wyświetleń: 497
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Standardowa biblioteka szablonów (STL) - strona 1

Fragment notatki:


Standardowa biblioteka  szablonów (STL) Wykład 11 11/01/10 2 Pliki nagłówkowe języka C  Wszystkie funkcje języka C zostały z  przestrzeni globalnej przeniesione do  przestrzenie nazw  std  //standard #include   using namespace std;  int main()  { printf ("Hello World!"); return  0; }   //niepraktykowane #include   int main()  { printf ("Hello World!"); return  0; }   Stary sposób dołączania też jest możliwy,  ale niepraktykowany ANSI-C++ ANSI-C 11/01/10 3 Standardowa biblioteka szablonów  (STL)  Rdzeniem standardowej biblioteki C++ jest tzw. standardowa  biblioteka szablonów  STL umożliwia zarządzanie kolekcjami danych przy użyciu  wydajnych algorytmów, bez konieczności dogłębnego poznawania  ich sposobu działania  STL oferuje grupę klas kontenerowych zaspokajających  rozmaite potrzeby wraz z algorytmami, które na nich operują  STL wzbogaca język C++ o nowy poziom abstrakcji  Możemy zapomnieć o programowaniu dynamicznych tablic czy drzew  oraz algorytmów do ich przeszukiwania  Ze względu na swoją elastyczność STL wymaga objaśnienia   Trzeba się zapoznać z jego składnikami   Oraz nauczyć się wydajnego korzystania z dostarczonych algorytmów 11/01/10 4 Składniki STL  Kontenery  – służą do zarządzania kolekcjami obiektów  określonego typu  Poszczególne kontenery mają różne zalety oraz wady i  odzwierciedlają zróżnicowane potrzeby wobec kolekcji w  tworzonych programach  Iteratory  – służą do poruszania się po kolekcjach  Oferują one interfejs wspólny dla każdego dowolnego typu  kontenerowego  Interfejs iteratorów jest bardzo podobny operacji na  wskaźnikach (możemy np. używać ++, *, -)  Algorytmy  – służą do przetwarzania elementów kolekcji  Mogą one wyszukiwać, sortować, modyfikować lub po prostu  wykorzystywać elementy  Algorytmy korzystają z iteratorów przez co mogą być  używane do dowolnego typu kolekcji 11/01/10 5 Koncepcja STL  Koncepcja biblioteki STL oparta jest na odseparowaniu danych  od operacji  Dane zarządzenie są przez klasy kontenerowe  Operacje natomiast definiowane są przez konfigurowalne 

(…)







operator* - zwraca element z aktualnej pozycji
operator++ - przesuwa iterator na pozycję następną
operator== i != zwracają wartość logiczną czy iteratory
reprezentują tą samą (inną) pozycję
operator= - przypisanie
Każdy kontener definiuje co najmniej dwa typy iteratorów



11/01/10
kontener::iterator – przeznaczony do nawigowania w
trybie odczytu i zapisu
kontener::const_iterator – przeznaczony…
…, tak żeby wszystkie elementy
się zmieściły w niej
W odniesieniu do rozmiaru wektory udostępniają funkcję
capacity(), która zwraca liczbę możliwych do pomieszczenie
elementów bez reorganizacji pamięci



W celu wcześniejszego zaalokowania pamięci możemy



Realokacja unieważnia wszystkie referencje, wskaźniki i iteratory
dotyczące elementów wektora
Realokacja zajmuje czas
Podać wielkość wektora w konstruktorze
std::vector<T> Vec(100); //wywoływane konstruktory
domyślne
Zarezerwować odpowiednią ilość pamięci
Vec.reserve(100); //zalecana wersja
Pojemność wektora nigdy nie maleje nawet jeśli usuwamy elementy
11/01/10
21
Rozmiar, a pojemność…


Wektory zajmują ciągły obszar pamięci
Pojemność wektorów nigdy nie maleje


Istnieje pośredni sposób na zmniejszenie
pojemności wektora


Gwarantuje…
…); - usuwa elementy o wartości val
c.remove_if(op); - usuwa elementy takie, dla
których wywołanie op(elem) == true; (op predykat)
Przykład cpp_11.6
11/01/10
31
Funkcje splatające

Listy udostępniają także wydajne metody służące do zmiany
kolejności oraz powiązań między poszczególnymi elementami



W obrębie jednej listy
Pomiędzy dwoma listami tego samego typu
Metody





11/01/10
c1.splice(pos, c2…
... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz