Kontenery, algorytmy
|
|
- Daria Kujawa
- 7 lat temu
- Przeglądów:
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
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) 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ółowoWartoś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ółowoProgramowanie 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ółowoAlgorytmy 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ółowoWykł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ółowoZaawansowane 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ółowoSTL: 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ółowoKurs 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ółowoPROE 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ółowoProgramowanie 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ółowoC++. 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ółowoJę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ółowoAPI 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ółowoZaawansowane 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ółowoAlgorytmy, 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ółowoProgramowanie 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ółowoSTL: 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ółowoDziedziczenie : 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ółowoKurs 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ółowoProgramowanie 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ółowoSTL 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ółowoSTL 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ółowoSzablony 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ółowoSpis 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ółowoInsERT 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ółowo3-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ółowoSTL 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ółowoProjektowanie 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ółowoBazy 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ółowoParadygmaty 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ółowoJę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ółowo0.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ółowo2. 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ółowoElementy 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ółowoPraca 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ółowoclass 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ółowoPERSON 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ółowoPrzykł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ółowoPojemniki 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ółowoEdycja 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ółowoZarzą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ółowoJak 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ółowoMicrosoft 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ółowoParadygmaty 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ółowoInstrukcja 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ółowoAkademickie 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ółowoW 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ółowoSpis 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ółowoSTL: 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ółowoASD - ć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ółowoUNIWERSYTET 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ółowoBiblioteka 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ółowoRegulamin 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ółowodr 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ółowoZarzą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ółowoDariusz 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ółowoJak 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ółowoOpis 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ółowoOperatory 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ółowoSpis 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ółowoKompozycja 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ółowoKontenery 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ółowoTechnologie 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ółowoKró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ółowoHarmonogramowanie 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ółowoJę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ółowoCharakterystyka 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ółowoPAKIET 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ółowoArchitektura 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ółowoPRAWA 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ółowoKancelaris - 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ółowoSTL: 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ółowoKonfiguracja 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ółowoProgramowanie 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ółowoPROJEKT. 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ółowoRegulamin 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ółowoOpis 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ółowoIMIĘ 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ółowoPROGRAM 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ółowoWYKŁ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ółowoWprowadzenie 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ółowoProjektowanie 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ółowoTABELA 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ółowoROZPORZĄ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ółowoFunkcje 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ółowoPrzypomnienie 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ółowoBIBLIOTEKA 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ółowoGEO-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ółowoKomputer 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ółowoTechniki 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ółowoRegulamin 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ółowoZaawansowane 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ółowoREGULAMIN 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ółowoProjektowanie 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ółowoStos 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ółowoBazy 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ółowoZarzą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ółowoKomunikacja 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