Kontenery, algorytmy

Wielkość: px
Rozpocząć pokaz od strony:

Download "Kontenery, algorytmy"

Transkrypt

1 Kontenery, algorytmy Zaawansowane biblioteki programistyczne Sebastian Deorowicz Politechnika Śląska Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

2 Plan wykładu 1 Kontenery sekwencyjne Kontener deque Adaptatory kontenerów Adaptator kontenera queue Adaptator kontenera stack Adaptator kontenera priority queue 2 Kontenery asocjacyjne Klasa pair Kontener set Kontener multiset Kontener bitset Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

3 Plan wykładu 1 Kontenery sekwencyjne Kontener deque Adaptatory kontenerów Adaptator kontenera queue Adaptator kontenera stack Adaptator kontenera priority queue 2 Kontenery asocjacyjne Klasa pair Kontener set Kontener multiset Kontener bitset Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

4 Kontener deque Czym jest kontener deque? 1 Kontener sekwencyjny Podobny do kontenera vector w tym, że wspiera bezpośredni dostęp do elementów a czas wstawiania i usuwania elementów ze środka jest liniowy Podobny do kontenera list w tym, że czas wstawiania i usuwania elementów z początku i końca jest stały 1 Dostępna w pliku nagłówkowym deque Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

5 Kontener deque Konstruktory Analogiczne jak w list i vector Przypisania Metody assign analogiczne jak w list i vector Operator przypisania również analogiczny Metody zwracające iteratory Dostępne metody begin, end, rbegin, rend zwracające iteratory o takim samym znaczeniu jak w innych kontenerach sekwencyjnych Metody związane z rozmiarem Dostępne metody size, max size, resize, empty o takim samym znaczeniu jak w innych kontenerach sekwencyjnych Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

6 Kontener deque dostęp swobodny do elementów reference operator[](size_type n) const_reference operator[](size_type n) const Działanie: Zwraca referencję (stałą referencję) do n-tego elementu kontenera Parametr: n numer elementu Zwracana wartość: Referencja (stała referencja) do elementu Złożoność: O(1) Uwaga: Brak kontroli zakresu, więc możliwe zachowanie niezdefiniowane jeśli podany błędny indeks Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

7 Kontener deque dostęp swobodny do elementów reference at(size_type n) const_reference at(size_type n) const Działanie: Zwraca referencję (stałą referencję) do n-tego elementu kontenera Parametr: n numer elementu Zwracana wartość: Referencja (stała referencja) do elementu Złożoność: O(1) Uwaga: Kontrola zakresu, więc jeśli podany błędny indeks to generuje wyjątek out_of_range Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

8 Kontener deque dostęp swobodny do elementów reference front() const_reference front() const reference back() const_reference back() const Działanie: Zwraca referencję (stałą referencję) do pierwszego (ostatniego) elementu kontenera Parametry: brak Zwracana wartość: Referencja (stała referencja) do elementu kontenera Złożoność: O(1) Uwaga: Brak kontroli zakresu, więc jeśli kontener jest pusty to zachowanie niezdefiniowane Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

9 Kontener deque operacje na końcach void push_front(const T& x) void push_back(const T& x) Działanie: Dodaje element na początek (koniec) kontenera Parametr: x wstawiany element Zwracana wartość: brak Złożoność: O(1) void pop_front() void pop_back() Działanie: Usuwa element z początku (końca) kontenera Parametry: brak Zwracana wartość: brak Złożoność: O(1) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

10 Kontener deque wstawianie i usuwanie elementów Wstawianie elementów Dostępne 3 metody insert o identycznych parametrach i działaniu jak dla kontenera vector i list Złożoność: O(n), gdzie n to rozmiar kontenera Usuwanie elementów Dostępne 2 metody erase o identycznych parametrach i działaniu jak dla kontenera vector i list Złożoność: O(n), gdzie n to rozmiar kontenera Inne Metoda clear identyczna jak dla innych kontenerów (złożoność O(n)) Metoda swap identyczna jak dla innych kontenerów (złożoność O(1)) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

11 Kontener deque wstawianie i usuwanie elementów Wstawianie elementów Dostępne 3 metody insert o identycznych parametrach i działaniu jak dla kontenera vector i list Złożoność: O(n), gdzie n to rozmiar kontenera Usuwanie elementów Dostępne 2 metody erase o identycznych parametrach i działaniu jak dla kontenera vector i list Złożoność: O(n), gdzie n to rozmiar kontenera Inne Metoda clear identyczna jak dla innych kontenerów (złożoność O(n)) Metoda swap identyczna jak dla innych kontenerów (złożoność O(1)) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

12 Kontener deque wstawianie i usuwanie elementów Wstawianie elementów Dostępne 3 metody insert o identycznych parametrach i działaniu jak dla kontenera vector i list Złożoność: O(n), gdzie n to rozmiar kontenera Usuwanie elementów Dostępne 2 metody erase o identycznych parametrach i działaniu jak dla kontenera vector i list Złożoność: O(n), gdzie n to rozmiar kontenera Inne Metoda clear identyczna jak dla innych kontenerów (złożoność O(n)) Metoda swap identyczna jak dla innych kontenerów (złożoność O(1)) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

13 Kontener deque przykład Przykład # include <deque > using namespace std ; const int MAX = 10; int main ( int argc, char * argv []) { int tab [ MAX ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; deque <int > di(tab, tab+5); ShowCollection (di ); // di. insert (di. begin ()+3, tab+7, tab +10); ShowCollection (di ); // di. pop_front (); ShowCollection (di ); // } di. push_front (12); ShowCollection (di ); // Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

14 Adaptatory kontenerów Kontenery sekwencyjne Kontenery vector, list, deque częściowo mogą być używane zamiennie ale zawsze pewnym kosztem Nie można żadnej z nich zbudować w oparciu o inną bez utraty wydajności Adaptatory Często przydają się także inne kontenery sekwencyjne Ponieważ można je oprzeć na jednej z tych 3 podstawowych, to nie są one implementowane osobno, a jako adaptacje jednego z kontenrów podstawowych Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

15 Adaptator queue Składnia 2 template <class T, class Collection = deque <T> > class queue {... }; Opis Implementuje kolejkę FIFO Nie udostępnia operacji nie kolejkowych Kontener domyślnie oparty o deque ale można użyć dowolnego kontenera dostarczającego metod front, back, push back, pop front (czyli nie vector) 2 Dostępna w pliku nagłówkowym queue Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

16 Adaptator queue konstruktor queue(const Collection& = Collection()) Działanie: Tworzy pustą kolejkę (jeśli brak parametru) lub kolejkę zainicjalizowaną zawartością przekazanego kontenera Parametr: Kontener inicjalizujący kolejkę Zwracana wartość: brak Złożoność: Stała jeśli nie ma parametru bądź liniowa jeśli jest parametr Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

17 Adaptator queue operacje kolejkowe Implementacja bool empty () const { return c. empty ();} size_type size () const { return c. size ();} reference front () { return c. front ();} const_reference front () const { return c. front ();} reference back () { return c. back ();} const_reference back () const { return c. back ();} void push ( const value_type & x) {c. push_back (x );} void pop () {c. pop_front ();} Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

18 Adaptator queue inne operacje Inne operacje Dostępne operatory porównywania kontenerów działające identycznie jak dla kontenera, na którym jest oparta kolejka Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

19 Adaptator queue przykład Przykład # include <iostream > # include <list > # include <queue > using namespace std ; const int MAX = 10; template <class Queue > void ShowQueue ( Queue q) { for (;!q. empty (); q. pop ()) std :: cout << q. front () << " "; std :: cout << std :: endl ; } int main ( int argc, char * argv []) { int tab [ MAX ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; deque <int > di(tab, tab +10); queue <int > qdi (di ); } // ShowCollection ( qdi ); // Błąd kompilacji : brak metod begin () i end () ShowQueue ( qdi ); // // Błąd kompilacji : vector nie ma metody pop! // queue <int, vector <int > > qvi ( vector <int >( tab, tab +10)); // ShowQueue ( qvi ); list <int > li(tab, tab +10); li. reverse (); queue <int, list <int > > qli (li ); ShowQueue ( qli ); // Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

20 Adaptator stack Składnia 3 template <class T, class Collection = deque <T> > class stack {... }; Opis Implementuje stos Nie udostępnia operacji nie stosowych Kontener domyślnie oparty o deque ale można użyć dowolnego kontenera dostarczającego metod back, push back, pop back (czyli np. vector, list, deque) 3 Dostępna w pliku nagłówkowym stack Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

21 Adaptator stack konstruktor stack(const Collection& = Collection()) Działanie: Tworzy pusty stos (jeśli brak parametru) lub stos zainicjalizowany zawartością przekazanego kontenera Parametr: Kontener inicjalizujący stos Zwracana wartość: brak Złożoność: Stała jeśli nie ma parametru bądź liniowa jeśli jest parametr Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

22 Adaptator stack operacje stosowe Implementacja bool empty () const { return c. empty ();} size_type size () const { return c. size ();} reference top () { return c. back ();} const_reference top () const { return c. back ();} void push ( const value_type & x) {c. push_back (x );} void pop () {c. pop_back ();} Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

23 Adaptator stack inne operacje Inne operacje Dostępne operatory porównywania stosów działające identycznie jak dla kontenera, na którym jest oparta stos Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

24 Adaptator stack przykład Przykład # include <iostream > # include <vector > # include <stack > using namespace std ; const int MAX = 10; template <class Stack > void ShowStack ( Stack q) { for (;!q. empty (); q. pop ()) std :: cout << q.top () << " "; std :: cout << std :: endl ; } int main ( int argc, char * argv []) { int tab [ MAX ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; vector <int > vi(tab, tab +10); stack <int, vector <int > > svi (vi ); ShowStack ( svi ); // } deque <int > di(tab, tab +10); stack <int > sdi (di ); ShowStack ( sdi ); // sdi. push (10); ShowStack ( sdi ); // Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

25 Adaptator priority queue Składnia 4 template <class T, class Collection = vector <T>, class Compare = less < typename Collection :: value_type > > class priority_queue {... }; Opis Implementuje kolejkę priorytetową, czyli taką kolejkę, w której elementy są umieszczane według priorytetu Nie udostępnia operacji nie kolejkowych ani operatorów porównania kontenerów Kontener domyślnie oparty o vector ale można użyć dowolnego kontenera dostarczającego metod front, push back, pop back oraz iteratorów dostępu swobodnego (czyli np. vector, deque, ale nie list) Ostatni parametr wzorca określa kryterium porównywania dla ustalenia priorytetu domyślnie przy użyciu operatora < Wewnętrznie implementowana za pomocą kopca 4 Dostępna w pliku nagłówkowym queue Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

26 Adaptator priority queue konstruktory priority_queue(const Compare& comp = Compare(), const Collection& = Collection()) Działanie: Tworzy pustą kolejkę priorytetową i inicjalizuje ją (jeśli jest parametr) zawartością kontenera przekazanego jako drugi parametr Parametry: pierwszy określa kryterium sortowania drugi zawiera dane do inicjalizacji kontenera Zwracana wartość: brak Złożoność: Stała jeśli nie ma parametru bądź O(n) jeśli jest parametr Uwaga: Po inicjalizacji kolejki wywoływana jest funkcja STL: make_heap(c.begin(), c.end(), comp) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

27 Adaptator priority queue konstruktory priority_queue(inputiterator first, InputIterator last, const Compare& comp = Compare(), const Collection& y = Collection()) Działanie: Tworzy pustą kolejkę priorytetową i inicjalizuje ją zawartością określoną przekazanymi iteratorami: [first, last) Parametry: first, last iteratory specyfikujące zakres kontenera używanego do inicjalizacji kolejki priorytetowej trzeci określa kryterium sortowania czwarty zawiera dane do inicjalizacji kolekcji Zwracana wartość: brak Złożoność: O(n) Uwaga: Po inicjalizacji kolejki wywoływana jest funkcja STL: make_heap(c.begin(), c.end(), comp) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

28 Adaptator priority queue operacje kolejkowe Implementacja bool empty () const { return c. empty ();} size_type size () const { return c. size ();} const_reference top () const { return c. front ();} void push ( const value_type & x); void pop (); Złożoność empty, size, top w zależności od złożoności tych operacji dla kontenera, na którym jest oparta kolejka priorytetowa; dla wektora będzie to O(1) push, pop O(log n) Uwaga Zachowanie metod top i pop dla pustej kolejki jest niezdefiniowane Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

29 Adaptator priority queue przykład Przykład # include <iostream > # include <queue > # include <vector > # include <deque > # include <functional > # include <string > using namespace std ; const int MAX = 10; template <class PQ> void ShowPQ (PQ &pq) { for (;!pq. empty (); pq.pop ()) cout << pq.top () << " "; cout << endl ; } int main ( int argc, char * argv []) { int tab [ MAX ] = {5, 6, 8, 1, 2, 3, 4, 10, 7, 9}; vector <int > vi(tab, tab +10); priority_queue <int, vector <int >, less <int > > pqvi1 (less <int >(), vi ); ShowPQ ( pqvi1 ); // priority_queue <int, vector <int > > pqvi2 (tab, tab +10); ShowPQ ( pqvi2 ); // priority_queue <int, deque <int >, greater <int > > pqdi1 (greater <int >(), deque <int >( tab, tab +10)); ShowPQ ( pqdi1 ); // priority_queue <string, vector <string > > pqs ; pqs. push (" Ola "); pqs. push (" Jola "); pqs. push (" Iza "); ShowPQ ( pqs ); // Ola Jola Iza } Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

30 Plan wykładu 1 Kontenery sekwencyjne Kontener deque Adaptatory kontenerów Adaptator kontenera queue Adaptator kontenera stack Adaptator kontenera priority queue 2 Kontenery asocjacyjne Klasa pair Kontener set Kontener multiset Kontener bitset Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

31 Opis 5 Grupuje dwie wartości różnych typów w ramach jednej struktury Klasa pair Jest wykorzystywana w kontenerach i algorytmach STL Definicja template <class T1, class T2 > struct pair { typedef T1 first_type ; typedef T2 second_type ; T1 first ; T2 second ; pair (); pair ( const T1& x, const T2& y); template <class U, class V> pair ( const pair <U, V> &p); }; 5 Klasa zdefiniowana w pliku utility Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

32 Klasa pair konstruktory pair() Działanie: Inicjalizuje parę domyślnymi wartościami typów składowych pair(const T1& x, const T2& y) Działanie: Inicjalizuje parę wartościami x i y template <class U, class V> pair(const pair<u, V> &p) Działanie: Inicjalizuje parę wartością pary p Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

33 Klasa pair operator porównania bool operator==(const pair<t1, T2>& x, const pair<t1, T2>& y) Działanie: Porównuje dwie pary za pomocą operatorów == wywoływanych dla pierwszych i drugich składowych Parametry: x, y porównywane pary Zwracana wartość: x.first == y.first && x.second == y.second Złożoność: O(1) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

34 Klasa pair funkcja make pair template <class T1, class T2> pair<t1, T2> make_pair(t1 x, T2 y) Działanie: Tworzy obiekt pary Parametry: x, y pierwszy i drugi element pary Zwracana wartość: obiekt pary zawierający x i y Złożoność: O(1) Uwaga: Funkcja umożliwia niepodawanie w sposób jawny typów, w odróżnieniu od wywołania konstruktora: std::pair<int,double>(10,5.6) std::make_pair(10,5.6) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

35 Klasa pair przykład Przykład # include <iostream > # include <utility > # include <string > using namespace std ; template <class Pair > void ShowPair ( Pair p) { cout << "*" << p. first << "* " << p. second << endl ; } int main ( int argc, char * argv []) { pair <string, int > p1; ShowPair (p1 ); // ** 0 pair <string, float > p2(" Test ", 10); ShowPair (p2 ); // * Test * 10 ShowPair ( make_pair (10, 5.7)); // *10* 5.7 } ShowPair ( make_pair (" Zuzia ", 5.7)); // * Zuzia * 5.7 Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

36 Opis 6 Kontener umożliwia przechowywanie elementów Kontener set W odróżnieniu od kontenerów sekwencyjnych, w kontenerze set porządek elementów nie jest określany przez pozycję, na której są one wstawiane Elementy są uporządkowywane automatycznie zgodnie z określonym kryterium sortowania Kontener umożliwia przechowywanie tylko jednej kopii elementu (powtórzenia są zabronione) Kontener jest dostosowany do wymagań algorytmów realizujących operacje zbiorowe (suma, przecięcie, itd.) 6 Dostępna w pliku nagłówkowym set Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

37 Kontener set Kryterium sortowania Uporządkowanie ścisłe słabe: Jeśli prawdziwe x < y, to y < x jest nieprawdziwe Jeśli x < y i y < z, to musi zachodzić x < z x < x jest zawsze fałszywe Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

38 Kontener set konstruktory set(const Compare &comp = Compare(), const Allocator& = Allocator()) Działanie: Tworzy pusty zbiór Parametry: comp kryterium sortowania (domyślnie less<t>) Allocator obiekt alokatora Zwracana wartość: brak Złożoność: O(1) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

39 Kontener set konstruktory set(inputiterator first, InputIterator last, const Compare& comp = Compare(), const Allocator& = Allocator()) Działanie: Tworzy zbiór i inicjalizuje go elementami z zakresu [first, last) Parametry: first, last iteratory wejściowe specyfikujące zakres comp kryterium sortowania (domyślnie less<t>) Allocator obiekt alokatora Zwracana wartość: brak Złożoność (n liczba elementów w zakresie): O(n) jeśli elementy posortowane O(n log n) jeśli elementy nieposortowane Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

40 Kontener set konstruktory set(const set<key, Compare, Allocator>& x) Działanie: Tworzy zbiór i inicjalizuje go elementami ze zbioru x Parametr: x zbiór użyty do zainicjalizowania tworzonego kontenera Zwracana wartość: brak Złożoność: liniowa względem liczby elementów x Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

41 Kontener set przykład Przykład # include <set > # include <functional > using namespace std ; const int MAX = 10; typedef enum { poniedzialek, wtorek, sroda, czwartek, piatek, sobota, niedziela } t_days ; int main ( int argc, char * argv []) { int tab [ MAX ] = {1, 52, 31, 25, 4, 8, 65, 45, 65, 10}; set <int > si, si2 (tab, tab +10); ShowCollection (si ); // ShowCollection ( si2 ); // set <t_days > sd; set <t_days, greater <t_days > > sd2 ; sd. insert ( wtorek ); sd. insert ( piatek ); ShowCollection (sd ); // 1 4 sd2. insert ( sroda ); sd2. insert ( sobota ); ShowCollection ( sd2 ); // 5 2 } set <t_days, greater <t_days > > sd3 ( sd2 ); ShowCollection ( sd3 ); // 5 2 set <t_days, greater <t_days > > sd4 (sd. begin (), sd.end ()); ShowCollection ( sd4 ); // 4 1 Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

42 Kontener set przypisanie set<key, Compare, Allocator >& operator = (const set<key, Compare, Allocator>& x) Działanie: Operator przypisania, kopiujący zawartość kontenera Parametr: x kopiowany zbiór Złożoność: liniowa względem sumy liczby elementów kopiowanego zbioru i liczby elementów zbioru bieżącego (elementy z bieżącego zbioru muszą być usunięte) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

43 Kontener set inne metody Metody zwracające iteratory Dostępne metody begin, end, rbegin, rend zwracające iteratory analogiczne do iteratorów dla kontenerów sekwencyjnych Złożoność: O(1) Uwaga: kolejność elementów określana przez kryterium sortowania Metody związane z rozmiarem Dostępne metody empty, size, max size analogiczne jak dla kontenerów sekwencyjnych Złożoność: O(1) Operatory Dostępne operatory ==,!=, <, <=, >=, > porównujące zbiory Złożoność: liniowa względem rozmiaru mniejszego ze zbiorów Uwaga: kolejność wstawiania elementów do porównywanych zbiorów nie ma znaczenia liczy się tylko ich zawartość Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

44 Kontener set wstawianie elementów pair<iterator, bool> insert(const value_type& x) Działanie: Wstawia element do zbioru Parametr: x wstawiany element Zwracana wartość: Para opisująca wynik wstawiana; składowe oznaczają: first iterator do wstawionego elementu lub do elementu już istniejącego jeśli próbujemy wstawiać element już istniejący second wartość logiczna określająca czy element udało się wstawić (true) czy też taki element już istniał (false) Przykład Złożoność: O(log n), gdzie n jest liczbą elementów w kontenerze # include <iostream > # include <set > int main ( int argc, char * argv []) { std :: set <int > si; std :: pair <std ::set <int >:: iterator, bool > status ; status = si. insert (5); std :: cout << status. second << std :: endl ; // 1 status = si. insert (5); std :: cout << status. second << std :: endl ; // 0 } Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

45 Kontener set wstawianie elementów iterator insert(iterator position, const value_type& x) Działanie: Wstawia element do zbioru Parametry: position wskazówka dla metody gdzie rozpocząć poszukiwanie miejsca dla wstawianego elementu; x wstawiany element Zwracana wartość: Iterator do wstawionego (bądź istniejącego już wcześniej w zbiorze) elementu Złożoność: O(log n), gdzie n to liczba elementów w kontenerze Uwaga: Elementy są posortowane wewnątrz kontenera, więc podanie jako parametr miejsca bliskiego docelowemu pozwala na szybsze wstawianie nawet w czasie O(1) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

46 Kontener set wstawianie elementów void insert(inputiterator first, InputIterator last) Działanie: Wstawia do zbioru elementy z zakresu [first, last) Parametry: first, last iteratory specyfikujące zakres wstawianych elementów Zwracana wartość: brak Złożoność (n oznacza liczbę wstawianych elementów, s oznacza liczbę elementów w kontenerze): O(n + log s) jeśli elementy z zakresu są posortowane O(n log n + log s) jeśli elementy z zakresu nie są posortowane Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

47 Kontener set usuwanie elementów void erase(iterator position) Działanie: Usuwa element wskazywany przez iterator Parametr: position iterator wskazujący element do usunięcia Zwracana wartość: brak Złożoność: O(1) Uwaga: Jeśli position nie jest iteratorem wskazującym na istniejący element, to zachowanie niezdefiniowane Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

48 Kontener set usuwanie elementów size_type erase(const key_type& x) Działanie: Usuwa element x ze zbioru Parametr: x element do usunięcia Zwracana wartość: liczba usuniętych elementów (0 bądź 1) Złożoność: O(log n) gdzie n oznacza liczbę elementów w zbiorze Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

49 Kontener set usuwanie elementów iterator erase(iterator first, iterator last) Działanie: Usuwa elementy z zakresu [first, last) Parametry: first, last iteratory specyfikujące zakres Zwracana wartość: brak Złożoność: O(last first) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

50 Kontener set usuwanie elementów i zamiana zbiorów void clear() Działanie: Usuwa wszystkie elementy ze zbioru Parametry: brak Zwracana wartość: brak Złożoność: O(n) void swap(set<key, Compare, Allocator>&) Działanie: Zamienia zbiór ze zbiorem podanym jako parametr Parametr: zbiór do zamiany Zwracana wartość: brak Złożoność: O(1) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

51 Kontener set wyszukiwanie iterator find(const key_type& x) const_iterator find(const key_type& x) const Działanie: Wyszukuje element x w zbiorze Parametr: x wyszukiwany element Zwracana wartość: Iterator (stały iterator) do pozycji zawierającej element x lub iterator do pozycji za ostatnim elementem (wynik działania end()) jeśli elementu nie ma w zbiorze Złożoność: O(log n), gdzie n to liczebność kontenera Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

52 Kontener set zliczanie size_type count(const key_type& x) const Działanie: Zwraca liczbę elementów x w zbiorze Parametr: x wyszukiwany element Zwracana wartość: Liczba wystąpień x w zbiorze (0 lub 1) Złożoność: O(log n), gdzie n to liczebność kontenera Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

53 Kontener set przykład Przykład # include <iostream > # include <set > using namespace std ; const int MAX = 5; int main ( int argc, char * argv []) { int tab [ MAX ] = {1, 2, 3, 4, 5}; set <int > si(tab, tab+max ), si2 (tab, tab+max ); ShowCollection (si ); // } // Źle! set <int >:: iterator p = si.find (3); *p = 7; // To jest niestety legalne ShowCollection (si ); // cout << *si.find (4) << " " << si. count (4) << endl ; // 0 2!!! Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

54 Kontener set modyfikacja wartości kluczy Skąd te problemy? 7 Standard C++ wymaga aby obiekty przechowywane w kontenerze set nie miały modyfikatora const Taki element można w związku z tym zmodyfikować posługując się iteratorem! Jak poprawnie modyfikować klucze? 1 Wyszukać element do zmiany 2 Sporządzić jego lokalną kopię 3 Zmodyfikować kopię (w obiektach można modyfikować np. jedno z pól klucz, po którym zbiór jest sortowany) 4 Usunąć element do zmiany 5 Wstawić nowy element 7 Więcej w S. Meyers, STL w praktyce. 50 sposobów efektywnego wykorzystania Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

55 Kontener set przykład Przykład # include <iostream > # include <set > using namespace std ; const int MAX = 5; int main ( int argc, char * argv []) { int tab [ MAX ] = {1, 2, 3, 4, 5}; set <int > si(tab, tab+max ), si2 (tab, tab+max ); ShowCollection (si ); // // Źle! set <int >:: iterator p = si.find (3); *p = 7; // To jest niestety legalne ShowCollection (si ); // cout << *si.find (4) << " " << si. count (4) << endl ; // 0 2!!! } // Dobrze p = si2. find (3); int tmp = *p; tmp = 7; // Dla obiektów modyfikujemy np. jedno z pól ( klucz ) si2. erase (p); si2. insert (tmp ); ShowCollection ( si2 ); // cout << *si2.find (4) << " " << si2. count (4) << endl ; // 4 1!!! Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

56 Kontener set wyszukiwanie iterator lower_bound(const key_type& x) const_iterator lower_bound(const key_type& x) const Działanie: Wyszukuje najmniejszy element nie mniejszy niż x Parametr: x wyszukiwana wartość Zwracana wartość: Iterator do najmniejszego elementu nie mniejszego niż x bądź wartość zwracana przez end() Złożoność: O(log n), gdzie n to liczebność kontenera Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

57 Kontener set wyszukiwanie iterator upper_bound(const key_type& x) const_iterator upper_bound(const key_type& x) const Działanie: Wyszukuje największy element nie większy niż x Parametr: x wyszukiwana wartość Zwracana wartość: Iterator do najmniejszego elementu większego niż x bądź wartość zwracana przez end() Złożoność: O(log n), gdzie n to liczebność kontenera Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

58 Kontener set wyszukiwanie pair<iterator, iterator> equal_range(const key_type& x) pair<const_iterator, const_iterator> equal_range(const key_type& x) const Działanie: Wyszukuje zakres elementów zawierających x Parametr: x wyszukiwana wartość Zwracana wartość: Wyniki działania lower_bound i upper_bound w postaci pary Złożoność: O(log n), gdzie n to liczebność kontenera Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

59 Kontenera set wyszukiwanie Przykład # include <iostream > # include <set > using namespace std ; const int MAX = 5; int main ( int argc, char * argv []) { int tab [ MAX ] = {1, 19, 32, 15, 25}; set <int > si(tab, tab+max ); pair <set <int >:: iterator,set <int >:: iterator > range ; ShowCollection (si ); // cout << *si. lower_bound (15) << endl ; // 15 cout << *si. lower_bound (16) << endl ; // 19 cout << *si. upper_bound (15) << endl ; // 19 cout << *si. upper_bound (25) << endl ; // 32 } range = si. equal_range (15); cout << * range. first << " " << * range. second << endl ; // Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

60 Kontener set Jak to wszystko jest w środku zbudowane? Złożoności operacji mocno sugerują, że dane przechowywane są w zrównoważonych drzewach poszukiwań binarnych Często są to drzewa czerwono-czarne Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

61 Kontener multiset Opis 8 Kontener jest tym samym co kontener set z takim wyjątkiem, że elementy mogą się powtarzać Interfejs jest w zasadzie identyczny jak dla zbioru, z wyjątkiem jednej metody wstawiania elementów Nieco większego sensu nabierają takie metody jak count zwracające liczbę wystąpień elementu w wielozbiorze Złożoności niektórych operacji rosną usuwanie klucza O(log n + count) zliczanie wystąpień klucza O(log n + count) 8 Dostępna w pliku nagłówkowym set Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

62 Kontener multiset wstawianie elementu iterator insert(const value_type& x) Działanie: Wstawia element x do wielozbioru Parametr: x element do wstawienia Zwracana wartość: Iterator do wstawionego elementu (dla zbioru była tu para: iterator, wartość logiczna) Złożoność: O(log n), gdzie n to liczebność kontenera Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

63 Kontener bitset 9 Opis Tablica zawierająca ustaloną liczbę wartości logicznych Wygodna np. do zarządzania zbiorem znaczników Rozmiar kontenera przekazywany jest jako parametr wzorca a nie jako parametr konstruktora! 8 Dostępna w pliku nagłówkowym bitset Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

64 Kontener bitset konstruktory bitset() Działanie: Tworzy obiekt klasy bitset<n> zainicjalizowany wartościami 0 dla wszystkich bitów Parametry: brak Zwracana wartość: brak Złożoność: O(N) bitset(unsigned long val) Działanie: Tworzy obiekt klasy bitset<n> zainicjalizowany M najmłodszymi bitami val, gdzie M = min(n, sizeof(unsigned long)) Parametr: val wartość używana do inicjalizacji Zwracana wartość: brak Złożoność: O(1) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

65 Kontener bitset konstruktory bitset(const basic_string<chart, traits, Allocator>& str, typename basic_string<chart, traits, Allocator>::size_type pos=0, typename basic_string<chart, traits, Allocator>::size_type n = basic_string<chart, traits, Allocator>::npos) Działanie: Tworzy obiekt klasy bitset<n> zainicjalizowany wartościami przekazanymi jako obiekt klasy string (jakkolwiek magicznie to wygląda) Parametry: str obiekt klasy string używany do inicjalizacji pos początkowa pozycja, od której pobierane są bity do inicjalizacji n maksymalna liczba bitów, które mają być użyte do inicjalizacji Zwracana wartość: brak Złożoność: O(M), gdzie M = min(n, str.size() - pos) Zgłaszane wyjątki: invalid_argument któryś ze znaków inicjalizujących miał wartość różną od 0 i 1 out_of_range pos > str.size() Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

66 Kontener bitset operatory bitset<n>& operator&=(const bitset<n>& rhs) Działanie: Iloczyn bitowy dwóch kontenerów bitset (zmieniana jest zawartość bieżącego kontenera) Parametr: rhs kontener, z którym wykonywany jest iloczyn bitowy kontenera bieżącego Zwracana wartość: referencja do bieżącego obiektu Złożoność: O(N) Podobne operatory bitset<n>& operator =(const bitset<n>& rhs) suma logiczna bitset<n>& operator^=(const bitset<n>& rhs) różnica symetryczna Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

67 Kontener bitset operatory bitset<n>& operator<<=(size_t pos) Działanie: Przesuwa w lewo bity bieżącego kontenera o pos pozycji Parametr: pos liczba bitów do przesunięcia Zwracana wartość: referencja do bieżącego obiektu Złożoność: O(N) Uwaga: pos bitów z prawej strony otrzymuje wartość 0 Podobny operator bitset<n>& operator>>=(size_t pos) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

68 Kontener bitset operatory bitset<n>& set() Działanie: Ustawia wartość wszystkich bitów na 1 Parametry: brak Zwracana wartość: referencja do bieżącego obiektu Złożoność: O(N) bitset<n>& set(size_t pos, bool val=true) Działanie: Ustawia wartość bitu na pozycji pos na val Parametry: pos pozycja bitu val nowa wartość bitu Zwracana wartość: referencja do bieżącego obiektu Złożoność: O(1) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

69 Kontener bitset przykład Przykład # include <iostream > # include <bitset > # include <string > using namespace std ; int main ( int argc, char * argv []) { bitset <10> bs10 ; cout << bs10 << endl ; // bitset <14> bs14 (0xFFA9 ); cout << bs14 << endl ; // bitset <20> bs20 ( string (" " )); cout << bs20 << endl ; // // bs10 &= bs14 ; // Błąd kompilacji! bs10 ^= bs10 ; cout << bs10 << endl ; // bs14 <<= 2; cout << bs14 << endl ; // bs20. set (); cout << bs20 << endl ; // } bs10. set (3); cout << bs10 << endl ; // Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

70 Kontener bitset metody bitset<n>& reset() Działanie: Ustawia wartość wszystkich bitów na 0 Parametry: brak Zwracana wartość: referencja do bieżącego obiektu Złożoność: O(N) bitset<n>& reset(size_t pos) Działanie: Ustawia wartość bitu na pozycji pos na 0 Parametr: pos pozycja bitu Zwracana wartość: referencja do bieżącego obiektu Złożoność: O(1) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

71 Kontener bitset operatory bitset<n> operator~() const Działanie: Zwraca obiekt będący kopią bieżącego obiektu, w którym wszystkie bity są zanegowane Parametry: brak Zwracana wartość: Kopia bieżącego obiektu, w którym wszystkie bity są zanegowane Złożoność: O(N) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

72 Kontener bitset negowanie bitów bitset<n>& flip() Działanie: Neguje wartości wszystkich bitów w kontenerze Parametry: brak Zwracana wartość: referencja do bieżącego obiektu Złożoność: O(N) bitset<n>& flip(size_t pos) Działanie: Neguje wartość bitu na pozycji pos Parametr: pos pozycja bitu do zanegowania Zwracana wartość: referencja do bieżącego obiektu Złożoność: O(1) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

73 Kontener bitset konwersja unsigned long to_ulong() const Działanie: Konwertuje zawartość kontenera na typ unsigned long Parametry: brak Zwracana wartość: Wartość typu unsigned long zawierająca na kolejnych pozycjach wartości bitów z kontenera bitset Złożoność: O(1) Uwaga: Jeśli rozmiar kontenera jest większy niż sizeof(unsigned long) to generowany jest wyjątek overflow_error Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

74 Kontener bitset konwersja basic_string<chart, traits, Allocator> to_string() const basic_string <chart, traits, allocator<chart> >to_string() const basic_string <chart, char_traits<chart>, allocator <chart> > to_string() const basic_string <char, char_traits<char>, allocator <char> > to_string() const Działanie: Tworzy obiekt klasy string zawierający na kolejnych znakach wartości 0 bądź 1 odpowiadające wartościom bitów Parametry: brak Zwracana wartość: Obiekt klasy string reprezentujący wartości bitów z kontenera Złożoność: O(N) Uwaga: Pierwszy bit obiektu klasy string odpowiada najstarszemu bitowi kontenera Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

75 Kontener bitset inne metody size_t count() const Działanie: Zwraca liczbę ustawionych bitów w kontenerze Parametry: brak Zwracana wartość: Liczba ustawionych bitów Złożoność: O(N) size_t size() const Działanie: Zwraca rozmiar kontenera Parametry: brak Zwracana wartość: N Złożoność: O(1) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

76 Kontener bitset operatory porównań bool operator==(const bitset<n>& rhs) const Działanie: Porównuje dwa obiekty klasy bitset<n> Parametr: rhs kontener do porównania Zwracana wartość: true jeśli obiekty są identyczne Złożoność: O(N) bool operator!=(const bitset<n>& rhs) const Działanie: Porównuje dwa obiekty klasy bitset<n> Parametr: rhs kontener do porównania Zwracana wartość: true jeśli obiekty nie są identyczne Złożoność: O(N) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

77 Kontener bitset testowanie bitów bool test(size_t pos) const Działanie: Sprawdza wartość bitu pos Parametr: pos numer bitu do sprawdzenia Zwracana wartość: true jeśli bit jest ustawiony Złożoność: O(1) Uwaga: Jeśli pos nie jest prawidłowym numerem pozycji to generuje wyjątek out_of_range Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

78 Kontener bitset testowanie bitów bool any() const Działanie: Sprawdza czy jakikolwiek bit jest ustawiony Parametry: brak Zwracana wartość: true jeśli jakikolwiek bit kontenera jest ustawiony Złożoność: O(N), choć może być nawet O(1) dla niektórych implementacji bool none() const Działanie: Sprawdza czy żaden bit nie jest ustawiony Parametry: brak Zwracana wartość: true jeśli żaden bit kontenera nie jest ustawiony Złożoność: O(N), choć może być nawet O(1) dla niektórych implementacji Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

79 Kkontener bitset operatory przesunięć bitowych bitset<n> operator<<(size_t pos) const Działanie: Zwraca obiekt będący kopią obiektu bieżącego przesuniętą o pos bitów w lewo Parametr: pos przesunięcie Zwracana wartość: Kopia obiektu bieżącego przesunięta w lewo o pos bitów Złożoność: O(N) bitset<n> operator>>(size_t pos) const Działanie: Zwraca obiekt będący kopią obiektu bieżącego przesuniętą o pos bitów w prawo Parametr: pos przesunięcie Zwracana wartość: Kopia obiektu bieżącego przesunięta w prawo o pos bitów Złożoność: O(N) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

80 Kontener bitset operatory indeksowania bool operator[](size_t pos) const Działanie: Zwraca wartość bitu na pozycji pos Parametr: pos pozycja bitu Zwracana wartość: true jeśli bit jest ustawiony Złożoność: O(1) Uwaga: Jeśli pos jest niepoprawne to zachowanie niezdefiniowane bitset<n>::reference operator[](size_t pos) Działanie: Zwraca obiekt typu bitset<n>::reference taki, że: (*this)[pos] == this->test(pos) (*this)[pos ] = val jest równoważne this->set(pos, val) Parametr: pos pozycja bitu Zwracana wartość: Obiekt typu bitset<n>::reference Złożoność: O(1) Uwaga: Jeśli pos jest niepoprawne to zachowanie niezdefiniowane Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

81 Kontener bitset dostęp do bitów przez operator[] Metody reference& operator=(bool x) umożliwia przypisania b[i] = x reference& operator=(const reference&) umożliwia przypisania b[i] = b[j] bool operator~() const umożliwia zanegowanie bitu: a = ~b[i] operator bool() const umożliwia automatyczną konwersję do typu bool: x = b[i] reference& flip() umożliwia negowanie bitu: b[i].flip() Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

82 Kontener bitset operatory bitowe bitset<n> operator&(const bitset<n>& lhs, const bitset<n>& rhs) Działanie: Zwraca obiekt klasy bitset<n> będący iloczynem bitowym lhs i rhs Parametry: lhs, rhs obiekty, na których wykonywany jest iloczyn bitowy Zwracana wartość: Obiekt klasy bitset<n> zawierający iloczyn bitowy Złożoność: O(N) Podobne operatory bitset<n> operator (const bitset<n>& lhs, const bitset <N>& rhs) zwraca sumę logiczną bitset<n> operator^(const bitset<n>& lhs, const bitset <N>& rhs) zwraca różnicę symetryczną Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

83 Kontener bitset operatory strumieniowe template <class chart, class traits, size_t N> basic_istream<chart, traits>& operator>>(basic_istream<chart, traits>& is, bitset<n>& x) Działanie: Wczytuje ze strumienia wejściowego nie więcej niż N bitów do kontenera Parametry: is strumień wejściowy x obiekt klasy bitset<n> Zwracana wartość: referencja do obiektu strumienia wejściowego Złożoność: O(N) Uwaga: Wczytywanie bitów kończy się jeśli zajdzie dowolny z warunków: wczytano N bitów napotkano znak EOF w strumieniu następny znak w strumieniu jest różny od 0 i 1 Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

84 Kontener bitset operatory strumieniowe template <class chart, class traits, size_t N> basic_ostream<chart, traits>& operator<<(basic_ostream<chart, traits>& os, const bitset<n>& x) Działanie: Wypisuje bity z kontenera w postaci łańcucha znakowego do strumienia wyjściowego Parametry: os strumień wyjściowy x kontener bitset<n> Zwracana wartość: referencja do obiektu strumienia wyjściowego Złożoność: O(N) Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

85 Kontener bitset przykład Przykład # include <iostream > # include <bitset > # include <string > using namespace std ; int main ( int argc, char * argv []) { bitset <16> bs (0xF1F1 ); cout << bs << endl ; // cout << ~bs << endl ; // bs [4]. flip (); bs [5] = 0; cout << bs << endl ; // bs [4] = bs [0]; cout << bs << endl ; // cout << bs. count () << endl ; // 9 } cout << (bs ^ bitset <16>( string (" " ))) << endl ; // Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

86 Co będzie za tydzień? Poznamy kolejne kontenery asocjacyjne (map, multimap) Dowiemy się jeszcze więcej o iteratorach Poznamy też kolejne algorytmy Sebastian Deorowicz (PŚl) Kontenery, algorytmy / 84

Kontenery. Wykład 12. Programowanie (język C++) Rodzaje kontenerów. Przegląd kontenerów

Kontenery. Wykład 12. Programowanie (język C++) Rodzaje kontenerów. Przegląd kontenerów Programowanie (język C) Kontenery Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Rodzaje kontenerów Kontenery sekwencyjne kolekcje uporządkowane, w których kaŝdy element

Bardziej szczegółowo

Ćwiczenia IV - Kontenery (pojemniki)

Ćwiczenia IV - Kontenery (pojemniki) Ćwiczenia IV - Kontenery (pojemniki) 28 października 2010 Kontener Kontener jest to obiekt który zawiera w sobie obiekty innej klasy i ma zdefiniowane metody nimi zarządzające. Jednym z najprostszych przykładów

Bardziej szczegółowo

Wartości domyślne, szablony funkcji i klas

Wartości domyślne, szablony funkcji i klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Programowanie obiektowe w C++ Wykład 11

Programowanie obiektowe w C++ Wykład 11 Programowanie obiektowe w C++ Wykład 11 dr Lidia Stępień Akademia im. Jana Długosza w Częstochowie L. Stępień (AJD) Programowanie obiektowe w C++ 1 / 34 STL - rys historyczny utworzona została w 1994 r.

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Standard Template Library. Część 1. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.

Bardziej szczegółowo

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

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) 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

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 8 - biblioteka standardowa. Kolekcje i iteratory 27 kwietnia 2007 Powtórzenie - sprytne wskaźniki Zalety: upraszczają zarządzanie obiektami na stercie Wady: narzuty Sprytne wskaźniki dostępne w

Bardziej szczegółowo

STL: Lekcja 1&2. Filozofia STL

STL: Lekcja 1&2. Filozofia STL STL: Lekcja 1&2 Tematy: Filozofia STL Po co nam STL? Podstawowa zawartość STL Co warto znać zanim zaczniemy pracę z STL?: wskaźniki Praca na tekstach: klasa String Vector: nowy wymiar standardowych tablic.

Bardziej szczegółowo

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

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec PROE wykład 7 kontenery tablicowe, listy dr inż. Jacek Naruniec Prosty kontener oparty na tablicach Funkcja dodawanie pojedynczego słonia do kontenera: 1 2 3 4 5 6 7 11 12 13 14 15 16 17 21 22 23 24 25

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne

Bardziej szczegółowo

C++. Biblioteka standardowa. Podrêcznik programisty

C++. Biblioteka standardowa. Podrêcznik programisty PRZYK ADOWY ROZDZIA Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl IDZ DO KATALOG KSI EK ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK CENNIK I INFORMACJE ZAMÓW INFORMACJE

Bardziej szczegółowo

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

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk.   tel: Konsultacje: piątek: Języki Programowania Prowadząca: dr inż. Hanna Zbroszczyk e-mail: gos@if.pw.edu.pl tel: +48 22 234 58 51 Konsultacje: piątek: 12.00 13.30 www: http://www.if.pw.edu.pl/~gos/students/jp Politechnika Warszawska

Bardziej szczegółowo

API transakcyjne BitMarket.pl

API transakcyjne BitMarket.pl API transakcyjne BitMarket.pl Wersja 20140314 1. Sposób łączenia się z API... 2 1.1. Klucze API... 2 1.2. Podpisywanie wiadomości... 2 1.3. Parametr tonce... 2 1.4. Odpowiedzi serwera... 3 1.5. Przykładowy

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Zaawansowane programowanie w języku C++ Biblioteka standardowa Zaawansowane programowanie w języku C++ Biblioteka standardowa Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

Algorytmy, iteratory, kolekcje niestandardowe

Algorytmy, iteratory, kolekcje niestandardowe Algorytmy, iteratory, kolekcje niestandardowe Biblioteka STL Sebastian Deorowicz Politechnika Śląska 2006 11 06 Sebastian Deorowicz (PŚl) Algorytmy, iteratory, kolekcje niestandardowe 2006 11 06 1 / 83

Bardziej szczegółowo

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 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły

Bardziej szczegółowo

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

STL: kontenery. Typy kontenerów STL. STL: kontenery. STL: kontenery. STL: kontenery. Typy kontenerów STL. deque (double-ended queue) list Kontenery sekwencyjne: deque (kolejka dwustronna) deque (double-ended queue) implementacja kontenera zoptymalizowana pod kątem efektywności operacji dołączania i usuwania elementów z sekwencji na obu jej

Bardziej szczegółowo

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Programowanie II prowadzący: Adam Dudek Lista nr 8 Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Jest to najważniejsza cecha świadcząca o sile programowania

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna

Kurs programowania. Wykład 9. Wojciech Macyna Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

STL Standard Template Library

STL Standard Template Library ź ź STL Standard Template Library STL jest bibliotek kontenerów, algorytmów, iteratorów i wielu innych powszechnie u ywanych udogodnie programistycznych. STL jest wbudowany w standard j zyka C++, umo liwia

Bardziej szczegółowo

STL Standardt Template Library (wprowadzenie)

STL Standardt Template Library (wprowadzenie) STL Standardt Template Library (wprowadzenie) Biblioteka standardowych szablonów na dzień dzisiejszy stanowi jedną z najpotężniejszych możliwości języka C++ Zawiera szablony klas ogólnego przeznaczenia

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Spis treści OPERACJE NA TEKSTACH W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF31

Spis treści OPERACJE NA TEKSTACH W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF31 Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 2 Kod przedmiotu: ES1C300 016 (studia stacjonarne)

Bardziej szczegółowo

InsERT GT Własne COM 1.0

InsERT GT Własne COM 1.0 InsERT GT Własne COM 1.0 Autor: Jarosław Kolasa, InsERT Wstęp... 2 Dołączanie zestawień własnych do systemu InsERT GT... 2 Sposób współpracy rozszerzeń z systemem InsERT GT... 2 Rozszerzenia standardowe

Bardziej szczegółowo

3-4. 5-7. 8-10. 11-12 15-18. 19-22

3-4. 5-7. 8-10. 11-12 15-18. 19-22 1. 2. 3-4. 5-7. 8-10. 11-12 13-14. 15-18. 19-22 23-28. 29-30. Programowanie strukturalne i obiektowe Typ wyliczeniowy, lista wyliczeniowa. Rzutowanie w C++. Wskaźniki i referencje. Działania na wskaźnikach.

Bardziej szczegółowo

STL Standard Template Library

STL Standard Template Library Literatura Przykłady: STL Standard Template Library Nicolai M. Josuttis: C++ Standard Library: A tutorial and Reference, 1st, Pearson 1999, (Polska wersja: Nicolai M. Josuttis: C++ Biblioteka standardowa

Bardziej szczegółowo

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI) Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI) Jacek Cichosz www.zssk.pwr.wroc.pl Katedra Systemów i Sieci Komputerowych Politechnika Wrocławska Dziedziczenie 221 Dziedziczenie Dziedziczenie

Bardziej szczegółowo

Bazy danych. Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15

Bazy danych. Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15 Bazy danych Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 9/15 Przechowywanie danych Wykorzystanie systemu plików, dostępu do plików za pośrednictwem systemu operacyjnego

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Programowanie generyczne w C++ Dr inż. Andrzej Grosser Cz estochowa, 2016 2 Spis treści 1. Zadanie 3 5 1.1. Wprowadzenie.................................. 5 1.2. Obiekty funkcyjne................................

Bardziej szczegółowo

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

Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji Język C++ część 9 szablony klas Jarosław Gramacki Instytut Informatyki i Elektroniki szablony funkcji były omawiane na wcześniejszym wykładzie nazewnictwo: szablon funkcji wzorzec funkcji 2 szablony

Bardziej szczegółowo

0.1 Hierarchia klas. 0.1.1 Diagram. 0.1.2 Krótkie wyjaśnienie

0.1 Hierarchia klas. 0.1.1 Diagram. 0.1.2 Krótkie wyjaśnienie 0.1 Hierarchia klas 0.1.1 Diagram 0.1.2 Krótkie wyjaśnienie Po pierwsze to jest tylko przykładowe rozwiązanie. Zarówno na wtorkowych i czwartkowych ćwiczeniach odbiegaliśmy od niego, ale nie wiele. Na

Bardziej szczegółowo

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

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

Elementy cyfrowe i układy logiczne

Elementy cyfrowe i układy logiczne Elementy cyfrowe i układy logiczne Wykład Legenda Zezwolenie Dekoder, koder Demultiplekser, multiplekser 2 Operacja zezwolenia Przykład: zamodelować podsystem elektroniczny samochodu do sterowania urządzeniami:

Bardziej szczegółowo

Praca na wielu bazach danych część 2. (Wersja 8.1)

Praca na wielu bazach danych część 2. (Wersja 8.1) Praca na wielu bazach danych część 2 (Wersja 8.1) 1 Spis treści 1 Analizy baz danych... 3 1.1 Lista analityczna i okno szczegółów podstawowe informacje dla każdej bazy... 3 1.2 Raporty wykonywane jako

Bardziej szczegółowo

class A { public: A(): i(5), s("abc") { } int i; string s; };

class A { public: A(): i(5), s(abc) { } int i; string s; }; UWAGA! PoniŜej są pytania z egzaminu, z zaznaczonymi poprawnymi odpowiedziami. Przy niektórych z nich napisałem jakieś słowo komentarza (czemu tak, a nie inaczej...). Przypominam, Ŝe zasada punktacji była

Bardziej szczegółowo

PERSON Kraków 2002.11.27

PERSON Kraków 2002.11.27 PERSON Kraków 2002.11.27 SPIS TREŚCI 1 INSTALACJA...2 2 PRACA Z PROGRAMEM...3 3. ZAKOŃCZENIE PRACY...4 1 1 Instalacja Aplikacja Person pracuje w połączeniu z czytnikiem personalizacyjnym Mifare firmy ASEC

Bardziej szczegółowo

Przykład implementacji przeciażeń operatorów problem kolizji

Przykład implementacji przeciażeń operatorów problem kolizji Przykład implementacji przeciażeń operatorów problem kolizji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera

Bardziej szczegółowo

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

Pojemniki Pojemnik to obiekt, którego zadaniem jest przechowywanie innych obiektów. 1 Wstęp Biblioteka standardowa C++ Wejście/wyjście (iostream) Napisy (string) Napisy jako strumienie (sstream) STL Standard Template Library Pojemniki (kolekcje) Iteratory (wyliczanie elementów) Algorytmy

Bardziej szczegółowo

Edycja geometrii w Solid Edge ST

Edycja geometrii w Solid Edge ST Edycja geometrii w Solid Edge ST Artykuł pt.: " Czym jest Technologia Synchroniczna a czym nie jest?" zwracał kilkukrotnie uwagę na fakt, że nie należy mylić pojęć modelowania bezpośredniego i edycji bezpośredniej.

Bardziej szczegółowo

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska Zarządzanie projektami wykład 1 dr inż. Agata Klaus-Rosińska 1 DEFINICJA PROJEKTU Zbiór działań podejmowanych dla zrealizowania określonego celu i uzyskania konkretnego, wymiernego rezultatu produkt projektu

Bardziej szczegółowo

Jak Windows zarządza pamięcią?

Jak Windows zarządza pamięcią? Jak Windows zarządza pamięcią? System Windows definiuje dwa typy pamięci, często mylone przez użytkowników. Pamięć fizyczna (pamięc RAM zainstalowana w komputerze) Pamięć widziana przez daną aplikację

Bardziej szczegółowo

Microsoft Management Console

Microsoft Management Console Microsoft Management Console Konsola zarządzania jest narzędziem pozwalającym w prosty sposób konfigurować i kontrolować pracę praktycznie wszystkich mechanizmów i usług dostępnych w sieci Microsoft. Co

Bardziej szczegółowo

Paradygmaty programowania. Paradygmaty programowania

Paradygmaty programowania. Paradygmaty programowania Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................

Bardziej szczegółowo

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski Instrukcja obsługi Norton Commander (NC) wersja 4.0 Autor: mgr inż. Tomasz Staniszewski ITM Zakład Technologii Maszyn, 15.10.2001 2 1.Uruchomienie programu Aby uruchomić program Norton Commander standardowo

Bardziej szczegółowo

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Akademickie Centrum Informatyki PS. Wydział Informatyki PS Akademickie Centrum Informatyki PS Wydział Informatyki PS Wydział Informatyki Sieci komputerowe i Telekomunikacyjne ROUTING Krzysztof Bogusławski tel. 4 333 950 kbogu@man.szczecin.pl 1. Wstęp 2. Tablica

Bardziej szczegółowo

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

W przypadku STL w specyfikacji nazwy pliku nagłówkowego brak rozszerzenia tj. <string> <string.h> zamiast Wykład 12 - Biblioteka stadardowa.sxw 1 Przegląd biblioteki standardowej C++; W porównaniu z pierwszymi implementacjami i specyfikacjami C++ biblioteka standardowa języka C++ bardzo się rozrosła, a w latach

Bardziej szczegółowo

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

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych Spis treści 1. Wstęp... 9 1.1. Inżynieria oprogramowania jako proces... 10 1.1.1. Algorytm... 11 1.2. Programowanie w językach wysokiego poziomu... 11 1.3. Obiektowe podejście do programowania... 12 1.3.1.

Bardziej szczegółowo

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

STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery Kontenery sekwencyjne: list (lista dwukierunkowa) jest przystosowany do szybkiego wstawiania elementów w dowolne miejsce sekwencji, nie nadaje się do efektywnej realizacji operacji swobodnego dostępu,

Bardziej szczegółowo

ASD - ćwiczenia III. Dowodzenie poprawności programów iteracyjnych. Nieformalnie o poprawności programów:

ASD - ćwiczenia III. Dowodzenie poprawności programów iteracyjnych. Nieformalnie o poprawności programów: ASD - ćwiczenia III Dowodzenie poprawności programów iteracyjnych Nieformalnie o poprawności programów: poprawność częściowa jeżeli program zakończy działanie dla danych wejściowych spełniających założony

Bardziej szczegółowo

UNIWERSYTET MARII CURIE-SKŁODOWSKIEJ WYDZIAŁ MATEMATYKI, FIZYKI I INFORMATYKI INSTYTUT INFORMATYKI. Wprowadzenie do STL.

UNIWERSYTET MARII CURIE-SKŁODOWSKIEJ WYDZIAŁ MATEMATYKI, FIZYKI I INFORMATYKI INSTYTUT INFORMATYKI. Wprowadzenie do STL. Wprowadzenie do STL UNIWERSYTET MARII CURIE-SKŁODOWSKIEJ WYDZIAŁ MATEMATYKI, FIZYKI I INFORMATYKI INSTYTUT INFORMATYKI Wprowadzenie do STL Paweł Mikołajczak LUBLIN 2012 Instytut Informatyki UMCS Lublin

Bardziej szczegółowo

Biblioteka standardowa C++

Biblioteka standardowa C++ Biblioteka standardowa C++ Wejście/wyjście (iostream) Napisy (string) Napisy jako strumienie (sstream) STL Standard Template Library Pojemniki (kolekcje) Iteratory (wyliczanie elementów) Algorytmy (sortowanie,

Bardziej szczegółowo

Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Działania Ziemia Bielska

Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Działania Ziemia Bielska Załącznik nr 1 do Lokalnej Strategii Rozwoju na lata 2008-2015 Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Działania Ziemia Bielska Przepisy ogólne 1 1. Walne Zebranie Członków

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2011/2012 Pracownia nr 9 (20.01.2012) dr inż. Jarosław Forenc Rok

Bardziej szczegółowo

Zarządzanie dyskami w Windows XP

Zarządzanie dyskami w Windows XP Zarządzanie dyskami w Windows XP Przygotowując twardy dysk do pracy z systemem Windows XP mamy do dyspozycji wiele możliwości, które pomagają nam w sposób najbardziej efektywny i wydajny zarządzać tymi

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)

Bardziej szczegółowo

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach.

Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach. Jak usprawnić procesy controllingowe w Firmie? Jak nadać im szerszy kontekst? Nowe zastosowania naszych rozwiązań na przykładach. 1 PROJEKTY KOSZTOWE 2 PROJEKTY PRZYCHODOWE 3 PODZIAŁ PROJEKTÓW ZE WZGLĘDU

Bardziej szczegółowo

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej 3.1 Informacje ogólne Program WAAK 1.0 służy do wizualizacji algorytmów arytmetyki komputerowej. Oczywiście istnieje wiele narzędzi

Bardziej szczegółowo

Operatory na rzecz typu TString

Operatory na rzecz typu TString Operatory na rzecz typu TString Dopiszmy w definicji klasy operator[], dzięki któremu potraktujemy obiekt jak tablicę class TString { public: char& operator[]( size_t n ); const char& operator[]( size_t

Bardziej szczegółowo

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHICZNA 1

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHICZNA 1 I N T E R F E J S W E BSERVICES NADAWANIE PAKIETÓW DO S YSTEMU MKP P RZEZ INTERNET D O K U M E N T A C J A T E C H N I C Z N A S T Y C Z E Ń 2 0 1 2 Spis treści 1. Wstęp... 2 2. Informacje ogólne... 2

Bardziej szczegółowo

Kompozycja i dziedziczenie klas

Kompozycja i dziedziczenie klas Programowanie obiektowe Kompozycja i dziedziczenie klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Kompozycja i dziedziczenie klas

Bardziej szczegółowo

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce. Instrukcja laboratoryjna nr 2 Programowanie w języku C 2 (C++ poziom zaawansowany) Kontenery i iteratory. Wykorzystanie kontenerów w praktyce. dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż.

Bardziej szczegółowo

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

Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz. Technologie programowania Wykład 4 Przemek Błaśkiewicz 9 maja 2017 1 / 54 Szablony funkcji Często w programach zachodzi potrzeba użycia funkcji, które co do mechanizmu działaja tak samo, ale różnia się

Bardziej szczegółowo

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

Krótkie wprowadzenie do STL. XIV LO im. S. Staszica, K06 D Krótkie wprowadzenie do STL XIV LO im. S. Staszica, K06 D Arkadiusz Betkier Wojciech Sirko 30 marca 2010 Spis treści 1 Wstęp 2 2 Podstawowe struktury danych 4 2.1 pair................................ 4

Bardziej szczegółowo

Harmonogramowanie projektów Zarządzanie czasem

Harmonogramowanie projektów Zarządzanie czasem Harmonogramowanie projektów Zarządzanie czasem Zarządzanie czasem TOMASZ ŁUKASZEWSKI INSTYTUT INFORMATYKI W ZARZĄDZANIU Zarządzanie czasem w projekcie /49 Czas w zarządzaniu projektami 1. Pojęcie zarządzania

Bardziej szczegółowo

Język C++ wykład VIII

Język C++ wykład VIII Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,

Bardziej szczegółowo

Charakterystyka systemów plików

Charakterystyka systemów plików Charakterystyka systemów plików Systemy plików są rozwijane wraz z systemami operacyjnymi. Windows wspiera systemy FAT oraz system NTFS. Różnią się one sposobem przechowywania informacji o plikach, ale

Bardziej szczegółowo

PAKIET MathCad - Część III

PAKIET MathCad - Część III Opracowanie: Anna Kluźniak / Jadwiga Matla Ćw3.mcd 1/12 Katedra Informatyki Stosowanej - Studium Podstaw Informatyki PAKIET MathCad - Część III RÓWNANIA I UKŁADY RÓWNAŃ 1. Równania z jedną niewiadomą MathCad

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 6 RSC i CSC Znaczenie terminów CSC Complete nstruction Set Computer komputer o pełnej liście rozkazów. RSC Reduced nstruction Set Computer komputer o zredukowanej liście

Bardziej szczegółowo

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc PRAWA ZACHOWANIA Podstawowe terminy Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc a) si wewn trznych - si dzia aj cych na dane cia o ze strony innych

Bardziej szczegółowo

Kancelaris - Zmiany w wersji 2.50

Kancelaris - Zmiany w wersji 2.50 1. Listy Kancelaris - Zmiany w wersji 2.50 Zmieniono funkcję Dostosuj listę umożliwiając: o Zapamiętanie wielu widoków dla danej listy o Współdzielenie widoków między pracownikami Przykład: Kancelaria

Bardziej szczegółowo

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

STL: kontenery. STL: kontenery. STL: kontenery. Typy kontenerów STL. STL: kontenery. STL: kontenery. multimap. Kontener map: przykład zadanie: Kontener map: przykład zadanie: Jak policzyć liczby różnych słów występujących w tekście? Rozwiązanie: Potrzebny jest kontener, który będzie zawierał listę różnych słów (tj. listę bez powtórzeń), która

Bardziej szczegółowo

Konfiguracja historii plików

Konfiguracja historii plików Wielu producentów oprogramowania oferuje zaawansowane rozwiązania do wykonywania kopii zapasowych plików użytkownika czy to na dyskach lokalnych czy w chmurze. Warto jednak zastanowić się czy instalacja

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 2.

Programowanie 2. Język C++. Wykład 2. 2.1 Definicja, deklaracja, wywołanie funkcji.... 1 2.2 Funkcje inline... 4 2.3 Przekazanie do argumentu funkcji wartości, adresu zmiennej.... 5 2.4 Wskaźniki do funkcji... 8 2.5 Przeładowanie funkcji...

Bardziej szczegółowo

PROJEKT. w sprawie: wyboru Przewodniczącego Nadzwyczajnego Walnego Zgromadzenia Spółki

PROJEKT. w sprawie: wyboru Przewodniczącego Nadzwyczajnego Walnego Zgromadzenia Spółki Załącznik nr 2 o zwołaniu Spółki w sprawie: wyboru Przewodniczącego Spółki Nadzwyczajne Walne Zgromadzenie TAURON Polska Energia S.A. z siedzibą w Katowicach, działając na podstawie art. 409 Kodeksu spółek

Bardziej szczegółowo

Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Rybacka Bielska Kraina Postanowienia Ogólne

Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Rybacka Bielska Kraina Postanowienia Ogólne Tekst jednolity z dnia 10.10.2013 r. Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Rybacka Bielska Kraina Postanowienia Ogólne 1 Regulamin Obrad Walnego Zebrania Członków Lokalnej

Bardziej szczegółowo

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego Wstęp. Dodanie funkcjonalności wysyłania wniosków bez podpisów

Bardziej szczegółowo

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

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji

Bardziej szczegółowo

PROGRAM ZAPEWNIENIA I POPRAWY JAKOŚCI AUDYTU WEWNĘTRZNEGO

PROGRAM ZAPEWNIENIA I POPRAWY JAKOŚCI AUDYTU WEWNĘTRZNEGO Załącznik nr 4 do Zarządzenia Nr 103/2012 Burmistrza Miasta i Gminy Skawina z dnia 19 czerwca 2012 r. PROGRAM ZAPEWNIENIA I POPRAWY JAKOŚCI AUDYTU WEWNĘTRZNEGO MÓDL SIĘ TAK, JAKBY WSZYSTKO ZALEśAŁO OD

Bardziej szczegółowo

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania WYKŁAD 8 Reprezentacja obrazu Elementy edycji (tworzenia) obrazu Postacie obrazów na różnych etapach procesu przetwarzania Klasy obrazów Klasa 1: Obrazy o pełnej skali stopni jasności, typowe parametry:

Bardziej szczegółowo

Wprowadzenie do szablonów klas

Wprowadzenie do szablonów klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy

Bardziej szczegółowo

Projektowanie klas c.d. Projektowanie klas przykład

Projektowanie klas c.d. Projektowanie klas przykład Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej

Bardziej szczegółowo

TABELA ZGODNOŚCI. W aktualnym stanie prawnym pracodawca, który przez okres 36 miesięcy zatrudni osoby. l. Pornoc na rekompensatę dodatkowych

TABELA ZGODNOŚCI. W aktualnym stanie prawnym pracodawca, który przez okres 36 miesięcy zatrudni osoby. l. Pornoc na rekompensatę dodatkowych -...~.. TABELA ZGODNOŚCI Rozporządzenie Komisji (UE) nr 651/2014 z dnia 17 czerwca 2014 r. uznające niektóre rodzaje pomocy za zgodne z rynkiem wewnętrznym w zastosowaniu art. 107 i 108 Traktatu (Dz. Urz.

Bardziej szczegółowo

ROZPORZĄDZENIE KOMISJI (UE) NR

ROZPORZĄDZENIE KOMISJI (UE) NR 5.4.2013 Dziennik Urzędowy Unii Europejskiej L 95/9 ROZPORZĄDZENIE KOMISJI (UE) NR 313/2013 z dnia 4 kwietnia 2013 r. zmieniające rozporządzenie (WE) nr 1126/2008 przyjmujące określone międzynarodowe standardy

Bardziej szczegółowo

Funkcje składowe (metody)

Funkcje składowe (metody) Funkcje składowe (metody) class Punkt int x, y; void Rysuj() /* rysowanie */ ; class Punkt int x, y; void Rysuj(); ; void Punkt::Rysuj() /* rysowanie */ definicja funkcji wewnątrz ciała klasy funkcja otwarta

Bardziej szczegółowo

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych? Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych? 1 Podstawowe pojęcia: 2 3 4 5 Dana (ang.data) najmniejsza, elementarna jednostka informacji o obiekcie będąca przedmiotem przetwarzania

Bardziej szczegółowo

BIBLIOTEKA STANDARDOWA C++

BIBLIOTEKA STANDARDOWA C++ Programowanie Obiektowe (język C++) Wykład 11. BIBLIOTEKA STANDARDOWA C++ Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Biblioteka standardowa C++ - Wprowadzenie Główne elementy

Bardziej szczegółowo

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007 GEO-SYSTEM Sp. z o.o. 02-732 Warszawa, ul. Podbipięty 34 m. 7, tel./fax 847-35-80, 853-31-15 http:\\www.geo-system.com.pl e-mail:geo-system@geo-system.com.pl GEO-RCiWN Rejestr Cen i Wartości Nieruchomości

Bardziej szczegółowo

Komputer i urządzenia z nim współpracujące

Komputer i urządzenia z nim współpracujące Temat 1. Komputer i urządzenia z nim współpracujące Realizacja podstawy programowej 1. 1) opisuje modułową budowę komputera, jego podstawowe elementy i ich funkcje, jak również budowę i działanie urządzeń

Bardziej szczegółowo

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przestrzenie nazw Standardowa biblioteka szablonów

Bardziej szczegółowo

Regulamin Pracy Komisji Rekrutacyjnej w Publicznym Przedszkolu Nr 5 w Kozienicach

Regulamin Pracy Komisji Rekrutacyjnej w Publicznym Przedszkolu Nr 5 w Kozienicach Regulamin Pracy Komisji Rekrutacyjnej w Publicznym Przedszkolu Nr 5 w Kozienicach Podstawa prawna: Ustawa z dnia 7 września 1991 o systemie oświaty (tekst jednolity Dz. U. z 2015 r., poz. 2156 ze zm.),

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania

Bardziej szczegółowo

REGULAMIN OBRAD WALNEGO ZEBRANIA CZŁONKÓW STOWARZYSZENIA LOKALNA GRUPA DZIAŁANIA STOLEM

REGULAMIN OBRAD WALNEGO ZEBRANIA CZŁONKÓW STOWARZYSZENIA LOKALNA GRUPA DZIAŁANIA STOLEM Załącznik do uchwały Nr 8/08 WZC Stowarzyszenia LGD Stolem z dnia 8.12.2008r. REGULAMIN OBRAD WALNEGO ZEBRANIA CZŁONKÓW STOWARZYSZENIA LOKALNA GRUPA DZIAŁANIA STOLEM Rozdział I Postanowienia ogólne 1.

Bardziej szczegółowo

Projektowanie bazy danych

Projektowanie bazy danych Projektowanie bazy danych Pierwszą fazą tworzenia projektu bazy danych jest postawienie definicji celu, założeo wstępnych i określenie podstawowych funkcji aplikacji. Każda baza danych jest projektowana

Bardziej szczegółowo

Stos LIFO Last In First Out

Stos LIFO Last In First Out Stos LIFO Last In First Out Operacje: push - dodanie elementu na stos pop - usunięcie elementu ze stosu empty - sprawdzenie, czy stos jest pusty size - zwrócenie liczby elementów na stosie value (peek)

Bardziej szczegółowo

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski Bazy danych II Andrzej Grzybowski Instytut Fizyki, Uniwersytet Śląski Wykład 11 Zastosowanie PHP do programowania aplikacji baz danych Oracle Wsparcie programowania w PHP baz danych Oracle Oprócz możliwego

Bardziej szczegółowo

Zarządzanie Zasobami by CTI. Instrukcja

Zarządzanie Zasobami by CTI. Instrukcja Zarządzanie Zasobami by CTI Instrukcja Spis treści 1. Opis programu... 3 2. Konfiguracja... 4 3. Okno główne programu... 5 3.1. Narzędzia do zarządzania zasobami... 5 3.2. Oś czasu... 7 3.3. Wykres Gantta...

Bardziej szczegółowo

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET

Komunikacja w sieci Industrial Ethernet z wykorzystaniem Protokołu S7 oraz funkcji PUT/GET PoniŜszy dokument zawiera opis konfiguracji programu STEP7 dla sterowników SIMATIC S7 300/S7 400, w celu stworzenia komunikacji między dwoma stacjami S7 300 za pomocą sieci Industrial Ethernet, protokołu

Bardziej szczegółowo