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



Podobne dokumenty
STL: Lekcja 1&2. Filozofia STL

Programowanie i struktury danych

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 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

STL Standardt Template Library (wprowadzenie)

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

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

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.

Struktury Danych i Złożoność Obliczeniowa

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

Zaawansowane programowanie w C++ (PCP)

Kompletna dokumentacja kontenera C++ vector w -

Struktury danych: stos, kolejka, lista, drzewo

Struktury danych (I): kolejka, stos itp.

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

Biblioteka standardowa C++

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

Programowanie obiektowe

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

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

Jak Windows zarządza pamięcią?

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

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

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

Programowanie Komponentowe Zarządzanie obiektami: kontenery

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

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


Kurs programowania. Wykład 9. Wojciech Macyna

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

Język C++ wykład VIII

Dynamiczne struktury danych

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

BIBLIOTEKA STANDARDOWA C++

Algorytmy i Struktury Danych.

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Algorytmy i Struktury Danych. Anna Paszyńska

Opus Magnum C++11 : programowanie w języku C++. T. 2 / Jerzy Grębosz. Gliwice, cop Spis treści

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

Wstęp do programowania

Szablon klasy std::vector

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

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

STL Standard Template Library

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

Lista, Stos, Kolejka, Tablica Asocjacyjna

Kolekcje - pakiet Java Collections Framework

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

Stos LIFO Last In First Out

Teoretyczne podstawy informatyki

Struktury. Przykład W8_1

Szablon klasy std::list

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

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

Marcin Matusiak i Łukasz Stasiak

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

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Listy i funkcje zaprzyjaźnione w C++

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Java Collections Framework

Programowanie i struktury danych 1 / 44

Kolekcje - pakiet Java Collections Framework

WSTĘP DO INFORMATYKI. Struktury liniowe

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

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

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Symfonia C++ standard : programowanie w języku C++ orientowane obiektowo. T. 1 / Jerzy Grębosz. Wyd. 3 C - popr. Kraków, 2015.

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

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

Podstawy Programowania

Kontenery, algorytmy

Podstawowe struktury danych

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

java.util.* :Kolekcje Tomasz Borzyszkowski

Podstawy informatyki 2. Podstawy informatyki 2. Wykład nr 2 ( ) Plan wykładu nr 2. Politechnika Białostocka. - Wydział Elektryczny

Programowanie obiektowe w C++ Wykład 11

Klasa std::string. Bogdan Kreczmer. ZPCiR IIAiR PWr pokój 307 budynek C3.

Opisy efektów kształcenia dla modułu

Paradygmaty programowania

dr inż. Jarosław Forenc

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.

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Podstawy informatyki 2

Algorytmy i Struktury Danych.

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Wykład 8: klasy cz. 4

Programowanie w języku Java. Kolekcje

Operatory na rzecz typu TString

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych.

Abstrakcyjne struktury danych - stos, lista, drzewo

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

PRZEWODNIK PO PRZEDMIOCIE

Transkrypt:

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1

Kontenery W programowaniu obiektowym kontener to "pojemnik" na dane. Typ przechowywanych danych określa argument szablonu. Kontener jest dynamiczną strukturą danych taką jak wektor, lista jednokierunkowa, lista dwukierunkowa, kolejka, stos itd. W przestrzeni nazw std znajdują się szablony klas implementujących wymienione wyżej kontenery. 2016-01-08 Bazy danych-1 W5 2

Kontener vector Szablon vector jest to struktura danych reprezentująca tablicę. Tablica jest zbudowana z elementów o typie przekazanym za pomocą parametru Type. Kontener ten umożliwia modyfikację rozmiaru tablicy w czasie życia obiektu. Dane w tablicy są ułożone w pamięci zawsze w sposób ciągły co oznacza, że kopiowanie danych do kontenera i z kontenera za pomocą funkcji takich jak np. memcpy jest zawsze bezpieczne. Kontener ten należy używać zawsze wtedy, gdy priorytetem jest posiadanie szybkiego dostępu do dowolnego elementu kontenera. Szablon vector umożliwia dodawanie oraz usuwanie elementów na koniec tablicy w czasie stałym. Dodawanie oraz usuwanie elementów z początku bądź ze środka kontenera możliwe jest w czasie liniowym zależnym od liczby elementów w kontenerze. Kontener vector dokonuje realokacji pamięci gdy jakakolwiek metoda szablonu musi zwiększyć rozmiar tablicy kontenera i jednocześnie w kontenerze nie ma wolnego obszaru pamięci na nowo dodawane elementy. 2016-01-08 Bazy danych-1 W5 3

Element assign at back begin capacity clear empty end erase Metoda Usuwa wszystkie istniejące elementy z kontenera, a następnie kopiuje wskazane elementy do kontenera. Zwraca referencję na element, który znajduje się na podanej pozycji w kontenerze Zwraca referencję na ostatni element w kontenerze. Zwraca iterator wskazujący na pierwszy element. Zwraca maksymalną liczbę elementów jaką może pomieścić kontener bez wykonywania realokacji pamięci. Usuwa wszystkie elementy z kontenera vector. Sprawdza czy kontener jest pusty. Zwraca iterator wskazujący na element będący za ostatnim elementem. Usuwa jeden element lub wiele elementów z kontenera vector występujących na podanej pozycji lub w podanym zakresie. 2016-01-08 Bazy danych-1 W5 4

front get_allocator insert max_size operator[] pop_back push_back rbegin rend Zwraca referencję na pierwszy element w kontenerze. Zwraca kopię alokatora używanego do tworzenia elementów kontenera Wstawia jeden element lub wiele elementów do kontenera vector na określonej pozycji. Maksymalna możliwa długość tablicy kontenera wyrażona w liczbie elementów. Zwraca referencję na element, który znajduje się na podanej pozycji w kontenerze Usuwa jeden element z kontenera vector, znajdujący się na jego końcu. Dodaje nowy element na końcu kontenera vector. Zwraca iterator odwrotny wskazujący na ostatni element. Zwraca iterator odwrotny wskazujący na element występujący bezpośrednio przed pierwszym elementem. 2016-01-08 Bazy danych-1 W5 5

reserve resize size swap Rezerwuje tyle miejsca w kontenerze, żeby pomieściła się wskazana liczba elementów bez konieczności wykonywania dodatkowej realokacji pamięci przy ich dodawaniu. Ustawia nowy rozmiar kontenera vector. Zwraca liczbę elementów znajdujących się aktualnie w kontenerze. Kontenery zamieniają się posiadanymi danymi. 2016-01-08 Bazy danych-1 W5 6

2016-01-08 Bazy danych-1 W5 7

2016-01-08 Bazy danych-1 W5 8

2016-01-08 Bazy danych-1 W5 9

Kontener lista list Zalecane użycie w przypadku częstych operacji wstawiania i usuwania elementów. Lista połączona podwójnie dwukierunkowa. Każdy węzeł jest dowiązany do poprzedniego i następnego węzła. Klasa ta posiada wszystkie metody klasy vector. Wykorzystuje mechanizm iteratora uogólniony wskaźnik. 2016-01-08 Bazy danych-1 W5 10

2016-01-08 Bazy danych-1 W5 11

2016-01-08 Bazy danych-1 W5 12

Kontener "kolejka" (queue) Implementuje strukturę danych, która działa wg strategii FIFO (pierwszy przyszedł pierwszy wychodzi). Umieszczanie elementów w kolejce jest możliwe tylko przez dodawanie ich na koniec (metoda push). Pobieranie elementów tylko z początku kolejki (metoda front). Metoda pop usuwa element z początku kolejki. 2016-01-08 Bazy danych-1 W5 13

~queue back empty front pop push queue Size Element destruktor Metoda Zwraca referencję na ostatni element w kolejce Sprawdza, czy kolejka jest pusta Zwraca referencję na pierwszy element w kolejce Usuwa element z początku kolejki Umieszcza nowy element na końcu kolejki Konstruktor Zwraca liczbę elementów znajdujących się w kolejce 2016-01-08 Bazy danych-1 W5 14

2016-01-08 Bazy danych-1 W5 15

2016-01-08 Bazy danych-1 W5 16

Kontener "stos" (stack) Implementuje strukturę danych, która działa wg strategii LIFO (ostatni przyszedł pierwszy wychodzi). Umieszczanie elementów na stosie jest możliwe tylko przez dodawanie ich na "szczyt" stosu (metoda push). Pobieranie tylko ze szczytu stosu (metoda top). Metoda pop usuwa element ze szczytu stosu. 2016-01-08 Bazy danych-1 W5 17

Metody w klasie stos (stack) - szablon klasy ~stack empty pop push size stack top Destruktor. Sprawdza czy stos jest pusty. Zdejmuje istniejący element ze szczytu stosu. Umieszcza nowy element na szczycie stosu. Zwraca liczbę elementów znajdujących się na stosie. Konstruktor. Zwraca referencję na szczytowy element stosu. 2016-01-08 Bazy danych-1 W5 18

2016-01-08 Bazy danych-1 W5 19

2016-01-08 Bazy danych-1 W5 20

Kontener asocjacyjny map Kontenery sekwencyjne (vector, list ) są przeznaczone do sekwencyjnego i swobodnego dostępu do elementów za pomocą indeksu lub odpowiedniego operatora. W standardowej bibliotece STL (ang. Standard Template Library) znajdują się oprócz nich tzw. kontenery asocjacyjne. Zapewniają one szybki swobodny dostęp do elementów przy pomocy kluczy. Są to: map, multimap, set i muiltiset. Następujący przykład pokazuje zastosowanie kontenera map: 2016-01-08 Bazy danych-1 W5 21

2016-01-08 Bazy danych-1 W5 22

2016-01-08 Bazy danych-1 W5 23

2016-01-08 Bazy danych-1 W5 24

2016-01-08 Bazy danych-1 W5 25

2016-01-08 Bazy danych-1 W5 26