Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Podobne dokumenty
Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Programowanie i struktury danych

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Biblioteka standardowa C++

Pojemniki Pojemnik to obiekt, którego zadaniem jest przechowywanie innych obiektów.

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

STL: Lekcja 1&2. Filozofia STL

STL Standardt Template Library (wprowadzenie)

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.

Zaawansowane programowanie w C++ (PCP)

Kompletna dokumentacja kontenera C++ vector w -

Język C++ wykład VIII

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

STL Standard Template Library

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

W przypadku STL w specyfikacji nazwy pliku nagłówkowego brak rozszerzenia tj. <string> <string.h> zamiast

Jak Windows zarządza pamięcią?

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Struktury Danych i Złożoność Obliczeniowa

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz.

Szablony funkcji i klas (templates)

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Wykorzystanie elementów z biblioteki standardowej C++: vector, list, complex oraz string.

Programowanie Obiektowo Zorientowane w języku C++ Biblioteka STL

10.1 Szablony Szablony funkcji Szablony klas Szablony jako wstęp do biblioteki STL... 10

Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji

STL: kontenery. Typy kontenerów STL. STL: kontenery. STL: kontenery. STL: kontenery. Typy kontenerów STL. deque (double-ended queue) list

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

Szablon klasy std::vector

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

C++: STL. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. Programowanie Obiektowe C++: Standard Template Library

Paradygmaty programowania

C++: STL. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. Programowanie Obiektowe C++: Standard Template Library.

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Biblioteka STL - wstęp. Biblioteka STL - literatura. Biblioteka STL - przegląd. Biblioteka STL - kwestie techniczne

Kurs programowania. Wykład 9. Wojciech Macyna

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji

Język C++ Różnice między C a C++

Tabela wewnętrzna - definicja

Operatory na rzecz typu TString

Algorytmy i Struktury Danych.

Wstęp do programowania obiektowego. STL - Standard Template Library

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Stos LIFO Last In First Out

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

Szablony klas, zastosowanie szablonów w programach

STL: kontenery. STL: kontenery. STL: kontenery. Typy kontenerów STL. STL: kontenery. STL: kontenery. multimap. Kontener map: przykład zadanie:

Podstawy Programowania

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Zaawansowane programowanie w C++ (PCP)

Programowanie komputerowe. Zajęcia 5

ZASADY PROGRAMOWANIA KOMPUTERÓW

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Wzorce funkcji (szablony)

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Krótkie wprowadzenie do STL. XIV LO im. S. Staszica, K06 D

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Podstawy programowania skrót z wykładów:

C-struktury wykład. Dorota Pylak

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Wykład 4. Klasa List Kolejki Stosy Słowniki

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Wydajność użycia funktorów z biblioteką STL języka C++

Kolekcje. Na podstawie:

Struktury danych: stos, kolejka, lista, drzewo

Programowanie w języku Java. Kolekcje

Szablony funkcji i szablony klas

Wykład 3 Składnia języka C# (cz. 2)

Kolekcje - pakiet Java Collections Framework

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Definicja szablonu klasy. Korzystanie z szablonu. Specjalizacja metody szablonu.

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

WSTĘP DO INFORMATYKI. Struktury liniowe

Programowanie obiektowe C++

Java Collections Framework

Opisy efektów kształcenia dla modułu

C-struktury wykład. Dorota Pylak

Zaawansowane programowanie w C++ (PCP)

Transkrypt:

Programowanie w C++ Wykład 7 Katarzyna Grzelak 23 kwietnia 2018 K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Standard Template Library (STL) K.Grzelak (Wykład 7) Programowanie w C++ 2 / 40

C++ Templates (Szablony) - wstęp Problem Funkcje: ten sam algorytm, ale różne dane wejściowe. Możliwe rozwiazanie Przeładowanie nazw funkcji K.Grzelak (Wykład 7) Programowanie w C++ 3 / 40

Przeładowanie nazw funkcji Przykład K.Grzelak (Wykład 7) Programowanie w C++ 4 / 40

C++ Templates (Szablony) Cel Funkcja (lub klasa) zdefiniowana niezależnie od typów zmiennych których używa. Rozwiazanie Szablony (templates) K.Grzelak (Wykład 7) Programowanie w C++ 5 / 40

Szablony funkcji (function templates) Definicja Niekompletna funkcja Brakuje części informacji: Sparametryzowane typy zmiennych K.Grzelak (Wykład 7) Programowanie w C++ 6 / 40

Szablony funkcji (function templates) Przykład template<typename T> void zamiana (T &a,t &b) Równoważny zapis (mylący): template<class T> void zamiana(t &a,t &b) Szablon funkcji reprezentuje nieskończona liczbę funkcji: K.Grzelak (Wykład 7) Programowanie w C++ 7 / 40

Szablon funkcji Przykład K.Grzelak (Wykład 7) Programowanie w C++ 8 / 40

STL STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki: 1 Pojemniki (kontenery) 2 Iteratory 3 Algorytmy K.Grzelak (Wykład 7) Programowanie w C++ 9 / 40

1) Pojemniki STL Pojemniki służa do przechowywania grup obiektów Vector Set Deque List Map K.Grzelak (Wykład 7) Programowanie w C++ 10 / 40

1) Pojemniki STL Pojemniki sekwencyjne: pozycja elementu w pojemniku zależy od czasu i miejsca gdzie został wstawiony, a nie zależy od jego wartości. Rodzaje: vector (wektor-tablica) deque (kolejka) list (lista) K.Grzelak (Wykład 7) Programowanie w C++ 11 / 40

1) Pojemniki STL Pojemniki asocjacyjne: aktualna pozycja elementu w pojemniku zależy od jego wartości set,multiset (zbiór) map,multimap (słownik) K.Grzelak (Wykład 7) Programowanie w C++ 12 / 40

2) Iteratory STL Iteratory służa do poruszania się po pojemnikach Iteratory działaja jak wskaźniki Nie tylko dla sekwencyjnych pojemników! (smart pointers) Zwykły wskaźnik z języka C++ jest iteratorem K.Grzelak (Wykład 7) Programowanie w C++ 13 / 40

3) Algorytmy STL Algorytmy to szablony funkcji sort search count replace... Algorytmy STL działaja dla każdego pojemnika. K.Grzelak (Wykład 7) Programowanie w C++ 14 / 40

Dygresja - nazewnictwo Metoda to funkcja działajaca na rzecz konkretnego obiektu. Składnia w kropka, przykład: string nazwa; cout «nazwa.size() «endl; Powyżej size() jest metoda z klasy string K.Grzelak (Wykład 7) Programowanie w C++ 15 / 40

1) Pojemniki STL Vector Set Deque List Map K.Grzelak (Wykład 7) Programowanie w C++ 16 / 40

1) Pojemniki STL To który pojemnik wybrać, zależy od problemu który rozwiazujemy. K.Grzelak (Wykład 7) Programowanie w C++ 17 / 40

1) Pojemniki STL - vector vector plik nagłówkowy #include<vector> dynamiczna tablica operator indeksowania [] lub metoda at() szybkie dodawanie(push_back()) i usuwanie(pop_back()) elementów na końcu wektora K.Grzelak (Wykład 7) Programowanie w C++ 18 / 40

1) Pojemniki STL - vector vector możliwe stworzenie pustego wektora i rozszerzanie go (zmniejszanie) na bieżaco najszybciej działa, jeśli z góry zarezerwujemy obszar pamięci metoda reserve() K.Grzelak (Wykład 7) Programowanie w C++ 19 / 40

1) Pojemniki STL - deque deque (double ended queue) plik nagłówkowy #include<deque> dynamiczna tablica operator indeksowania [] lub metoda at() szybkie dodawanie i usuwanie elementów na obu końcach: metody: push_back(), pop_back(), push_front(), pop_front() K.Grzelak (Wykład 7) Programowanie w C++ 20 / 40

1) Pojemniki STL - list list plik nagłówkowy #include<list> brak indeksowania! szybkie dodawanie i usuwanie elementów nie tylko na obu końcach, ale także w środku listy (metody: insert() i erase()). K.Grzelak (Wykład 7) Programowanie w C++ 21 / 40

1) Pojemniki STL - set set,multiset (zbiór) plik nagłówkowy #include<set> elementy automatycznie sortowane (względem wartości) każdy element może się pojawić w pojemniku set tylko raz multiset to samo co set, ale dany element może pojawić się więcej niż raz K.Grzelak (Wykład 7) Programowanie w C++ 22 / 40

1) Pojemniki STL - set set,multiset (zbiór) implementacja - zbalansowane drzewa binarne szybkie przeszukiwanie 7 4 9 2 5 8 11 1 3 6 10 12 K.Grzelak (Wykład 7) Programowanie w C++ 23 / 40

1) Pojemniki STL - map map,multimap (słownik) plik nagłówkowy #include<map> zawiera pary elementów: (klucz, wartość) elementy automatycznie sortowane (względem klucza) każdy klucz może się pojawić w pojemniku map tylko raz multimap to samo co map, ale dany klucz może pojawić się wiecej niż raz K.Grzelak (Wykład 7) Programowanie w C++ 24 / 40

1) Pojemniki STL - map map,multimap (słownik) implementacja - zbalansowane drzewa binarne szybkie przeszukiwanie elementów majacych określony klucz 7 y 4 y 9 x 2 y 5 q 8 y 11 w 1 x 3 z 6 y 10 q 12 z K.Grzelak (Wykład 7) Programowanie w C++ 25 / 40

2) Iteratory do poruszania się po pojemnikach, także tych o bardziej skomplikowanej strukturze operator * operator ++ operator ==!= operator = Zwykły wskaźnik jest iteratorem K.Grzelak (Wykład 7) Programowanie w C++ 26 / 40

2) Iteratory metoda begin() metoda end() begin() end() K.Grzelak (Wykład 7) Programowanie w C++ 27 / 40

2) Algorytmy Plik nagłówkowy #include<algorithm> Algorytmy działaja dla dowolnego pojemnika Globalne funkcje które działaja z iteratorami Algorytmy działaja dla zwykłych tablic K.Grzelak (Wykład 7) Programowanie w C++ 28 / 40

Przykład użycie zwykłych tablic + wskaźników + algorithm Algorytmy działaja dla zwykłych tablic Część 1 przykładowego programu - nagłówki K.Grzelak (Wykład 7) Programowanie w C++ 29 / 40

Przykład użycie zwykłych tablic + wskaźników + algorithm Algorytmy działaja dla zwykłych tablic Część 2 przykładowego programu - main K.Grzelak (Wykład 7) Programowanie w C++ 30 / 40

Przykład użycie zwykłych tablic + wskaźników + algorithm Część 3 przykładowego programu - funkcje K.Grzelak (Wykład 7) Programowanie w C++ 31 / 40

Więcej o pojemniku vector K.Grzelak (Wykład 7) Programowanie w C++ 32 / 40

vector Plik nagłówkowy #include<vector> Stworzenie pustego pojemnika do przechowywania obiektów typu int: vector<int> vec; Stworzenie pojemnika do przechowywania 10 obiektów typu double: vector<double> vec(10); Stworzenie pojemnika do przechowywania 10 obiektów typu double i inicjalizacja zerami vector<double> vec(10,0.); Iterator do poruszania się po pojemniku vector: vector<double>::iterator pos; K.Grzelak (Wykład 7) Programowanie w C++ 33 / 40

Metody dla wektora vector<int> vec; vec.push_back() - dodawanie elementu na końcu wektora vec.pop_back() - usuwanie elementu z końca wektora vec.size() - zwraca liczbę elementów vec.at(i) - zwraca element o indeksie i (sprawdzanie czy prawidłowy indeks) vec[i] - zwraca element o indeksie i (bez sprawdzania czy prawidłowy indeks) vec.clear() - usuwa wszystkie elementy K.Grzelak (Wykład 7) Programowanie w C++ 34 / 40

vector - Przykład bez iteratorów Nie zadziała, gdybyśmy chcieli zmienić vector na inny pojemnik. K.Grzelak (Wykład 7) Programowanie w C++ 35 / 40

vector - Przykład 2 bez iteratorów Nie zadziała, gdybyśmy chcieli zmienić vector na inny pojemnik. K.Grzelak (Wykład 7) Programowanie w C++ 36 / 40

vector - Przykład z iteratorami Bardziej uniwersalne. K.Grzelak (Wykład 7) Programowanie w C++ 37 / 40

vector - Przykład z algorytmem sortowania K.Grzelak (Wykład 7) Programowanie w C++ 38 / 40

Na koniec przykład użycia pojemnika map K.Grzelak (Wykład 7) Programowanie w C++ 39 / 40

Podsumowanie STL = pojemniki + iteratory + algorytmy K.Grzelak (Wykład 7) Programowanie w C++ 40 / 40