( rednio) zaawansowane programowanie w C++ (ZPR)

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

Download "( rednio) zaawansowane programowanie w C++ (ZPR)"

Transkrypt

1 ( rednio) zaawansowane programowanie w C++ (ZPR) Wykªad 11 - STL, bind Robert Nowak 2016Z ( rednio) zaawansowane programowanie w C++ (ZPR) 1/35

2 Programowanie generyczne - powtórzenie wspóªdzielenie kodu ¹ródªowego (, ) brak narzutów w czasie wykonania problemy: trudne w implementacji rozrost kodu wykonywalnego nieczytelne komunikaty o bª dach ( rednio) zaawansowane programowanie w C++ (ZPR) 2/35

3 Biblioteka STL (standardowa w C++ od 1997) Skªad: iteratory funktory (ob. funkcyjne) adaptery alokatory Cechy: wykorzystuje mechanizm szablonów kod wielokrotnego u»ycia mo»na stosowa do typów wbudowanych wykorzystuje wzorzec iteratora (zmniejsza liczb algorytmów) bezpieczna w aplikacjach wielow tkowych bardzo efektywna ( rednio) zaawansowane programowanie w C++ (ZPR) 3/35

4 Lista kolekcji standardowych basic_string vector list deque set map multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap sekwencyjne jednowymiarowa tablica jednowymiarowa tablica lista dwukierunkowa kolejka o dwu ko«cach asocjacyjne zbiór tablica asocjacyjna (sªownik) warto± mo»e wyst powa wielokrotnie klucz mo»e wyst powa wielokrotnie haszuj ce zbiór sªownik wielozbiór wielosªownik ( rednio) zaawansowane programowanie w C++ (ZPR) 4/35

5 Kontenery adaptery queue<t> kolejka priority_queue<t> kolejka priorytetowa stack<t> stos Inny podziaª: bazuj ce na tablicach: vector, string, deque bazuj ce na w zªach: list, set, map, multiset, multimap, unorderd_set, unorderd_map, unorderd_multiset, unorderd_multimap ( rednio) zaawansowane programowanie w C++ (ZPR) 5/35

6 Kopiowanie w bibliotece STL Biblioteka operuje na kopiach (kontener przechowuje kopie elementów) Obiekty przechowywane w kontenerach: powinny mie publiczny konstruktor kopiuj cy powinny mie publiczny operator przypisania Problemy: obiekty bazowe dla hierarchii klas (wycinanie) auto_ptr(t) (nietypowe kopiowanie) Gdy kopiowanie kosztowne: kontener wska¹ników na obiekty kontener sprytnych wska¹ników ze zliczaniem (shared_ptr) ( rednio) zaawansowane programowanie w C++ (ZPR) 6/35

7 std::vector Nagªówek: <vector> //Deklaracja template<class T, class A=allocator<T> > class std::vector; //Najwa»niejsze metody dost pu reference operator[](size_type n); reference at(size_type n) front() back() //Modyfikacja kolekcji void push_back(const&t); T pop_back(); //Wa»ne funkcje pomocnicze bool operator== bool operator< //Specjalizacje vector<bool> vector size capacity ptr 5 10 ( rednio) zaawansowane programowanie w C++ (ZPR) 7/35

8 std::list Nagªówek: <list> //Deklaracja template<class T, class A=allocator<T> > class std::list; //Metody dost pu - brak operatora[] front() back() //Modyfikacja kolekcji push_front(), push_back() pop_front(), pop_back() list head tail //Modyfikacja kolekcji insert erase //Inne metody void remove(const T& val) void reverse() splice merge sort ( rednio) zaawansowane programowanie w C++ (ZPR) 8/35

9 std::deque - kolejka o dwu ko«cach Nagªówek <deque> deque start end empty empty empty Operacje: takie jak dla wektora (za wyj tkiem capacity(), reserve() ) operacje z przodu ci gu (tak jak dla listy) ( rednio) zaawansowane programowanie w C++ (ZPR) 9/35

10 asocjacyjne ale: przechowuj elementy uporz dkowane dostarczaj metod wyszukiwania w czasie logarytmicznym Alternatywa: posortowany wektor porz dek elementów inny ni» kolejno± wstawiania iterator typu bidirectional, cz sto wymagaj random_access ( rednio) zaawansowane programowanie w C++ (ZPR) 10/35

11 set - zbiór eliminacja elementów równowa»nych a jest równowa»ne b, je»eli!(a < b) &&!(b < a) set<int> s; //zbiór liczb caªkowitych s.insert(1); //dodaje elementy do kolekcji s.insert(1); //ta operacja jest pusta (usuwa elementy równowa»ne) s.insert(2); assert( s.size() == 2); //bada liczb elementów assert( s.count(1) == 1 ); //zlicza liczb wyst pie«elementu ( rednio) zaawansowane programowanie w C++ (ZPR) 11/35

12 map - sªownik (tablica asocjacyjna) template<class K, class T, //typ klucza i warto±ci class Cmp = less<key>, //Porz dek dla klucza class A = allocator<pair<const K, T> > > class std::map; map key value iterator find(const K& k); size_type count(const K& k) const; pair<iter,iter> equal_range(const K& k); ( rednio) zaawansowane programowanie w C++ (ZPR) 12/35

13 boost::unordered_set lub std::unordered_set (C++11) nie zostaªy obj te standardem w 1999 roku dostawcy kompilatorów (wªasne rozwi zania): hash_set, hash_map, itd. standard C++11: unordered_set itd. wykorzystuj funkcj skrótu w przybli»eniu jednostkowy czas dost pu do elementów cena: zaj to± pami ci (dziaªa dobrze gdy wypeªniony w ok. 25%) ( rednio) zaawansowane programowanie w C++ (ZPR) 13/35

14 boost::array <boost/array.hpp> lub std::array (C++11) Adapter dla tablic z C dostarcza iteratorów oraz metod begin, end, rbegin, rend dostarcza metody: at, front, back i in. dostarcza operator==, operator< template<typename T, std::size_t N> class array { public: //... T elems[n]; }; //Przykªady u»ycia array<double, 4> tab = { 1.0, 1.1, 1.2, 1.3 }; array<double, 4> tab2(tab); cassert( tab == tab2 ); tab2.assign(0.0); //wszystkie elementy b d miaªy warto± 0 ( rednio) zaawansowane programowanie w C++ (ZPR) 14/35

15 Porównanie kolekcji - wydajno± indeksowanie insert, erase pocz tek koniec array O(1) vector O(1) O(n)+ - O(1)+ list - O(1) O(1) O(1) deque O(1) O(n) O(1) O(1) set,map O(log(n)) O(log(n)) - - unordered O(1)+ O(1)+ - - array - tablica odziedziczona po 'C' wektor - dost p przez indeks, rezerwowanie pami ci lista - optymalne wstawianie i usuwanie elementów deque - optymalne operacje na ko«cach, indeksowanie ( rednio) zaawansowane programowanie w C++ (ZPR) 15/35

16 Porównanie kolekcji cecha element w ustalonej pozycji kontenera dost p przez indeks wa»na szybko± wyszukiwania iteratory, wska¹niki nie mog by uniewa»niane j.w. dla operacji modykuj cej koniec kolekcji brak elementów równowa»nych nieistotny porz dek w jakim elementy s przechowywane kontener vector, string, list, deque vector, string, deque posortowane wektory, asocjacyjne, haszuj ce lista, asocjacyjne j.w. oraz deque set, map haszuj ce ( rednio) zaawansowane programowanie w C++ (ZPR) 16/35

17 STL i wielow tkowo± bezpiecznie czytanie bezpieczne pisanie do ró»nych kontenerów wiele w tków mo»e równocze±nie czyta z kontenera ró»ne w tki mog równocze±nie pisa do ró»nych kontenerów //Uwaga: string cz sto implementowany jako proxy-on-write void f(string s) { s += 'a';//modyfikacja napisu } rozwa»y zast pienie string przez vector<char> dla bardzo starych wersji biblioteki standardowej ( rednio) zaawansowane programowanie w C++ (ZPR) 17/35

18 niemodykuj ce for_each nd nd_if adjacent_nd nd_rst_of count count_if mismatch equal search search_n nd_end modykuj ce copy copy_n copy_backward swap iter_swap swap_ranges transform replace replace_if replace_copy replace_copy_if ll ll_n generate generate_n remove remove_if remove_copy... sortuj ce, zbiorowe, sterta, i in. ( rednio) zaawansowane programowanie w C++ (ZPR) 18/35

19 zakres, reverse-iterator iterator begin(); iterator do pierwszego elementu iterator end(); iter. do pierwszego za ostatnim reverse_iterator rbegin(); iteratory dla odwrotnej kolejno±ci reverse_iterator rend(); begin end A B C D rbegin rend D C B A ( rednio) zaawansowane programowanie w C++ (ZPR) 19/35

20 wykorzystanie algorytmów int TAB[] = { 3, 2, 0, 9, 1 }; vector<int> v(tab, TAB + sizeof(tab)/sizeof(tab[0]) ); //Jawna p tla for(int i : v) { cout << i << ' '; } for(vector<int>::const_iterator ii = v.begin(); ii!= v.end(); ++ii ) { cout << *ii << ' '; } //Pomocniczy funktor struct PrintFunctor : public std::unary_function<x,void> { void operator()(int x) { cout << x << ' '; } }; //Algorytm: zwarty kod, nie wywoªuje wielokrotnie v.end() for_each( v.begin(), v.end(), PrintFunctor() ); //Inny algorytm copy( v.begin(), v.end(), ostream_iterator<int>(cout," ") ); ( rednio) zaawansowane programowanie w C++ (ZPR) 20/35

21 wyszukiwanie Maj c zakres: elementy nieposortowane count int czy istnieje element i ile kopii nd iterator czy istnieje element i gdzie si znajduje elementy posortowane binary_search bool czy istnieje element lower_bound iterator upper_bound iterator equal_range para iteratorów Maj c kontener: sekwencyjny: tak jak zakres (begin, end) asocjacyjny: wykorzysta metody kontenera ( rednio) zaawansowane programowanie w C++ (ZPR) 21/35

22 usuwanie (remove nie usuwa elementów) Iter remove(iter rst, Iter last, const T& val) //Przykªad usuwania elementów vector<int> v; v.erase( remove(v.begin(), v.end(), 3), v.end() ); remove niebezpieczne dla kontenerów zawieraj cych wska¹niki ( rednio) zaawansowane programowanie w C++ (ZPR) 22/35

23 sortowanie partition dzieli elementy u»ywaj c predykatu stable_partiton j.w. nth_element znajduje pozycj danego elementu partial_sort sortuje cz ±ciowo sort stable_sort sortuje sortuje, dla elementów równowa»nych zachowany porz dek ( rednio) zaawansowane programowanie w C++ (ZPR) 23/35

24 std::min, std::max z <algorithm> //wykorzystuje operator< template <class T> const T& min ( const T& a, const T& b ) { return!(b<a)?a:b; } //wªasny operator porównania template <class T, class Compare> const T& min ( const T& a, const T& b, Compare comp ) { return!comp(b,a)?a:b; } cout << min(2,1) << endl; //drukuje 1 //Ze wzgl du na to,»e windows.h definiuje makrodefinicje min i max //czasami nale»y u»y dodatkowej pary nawiasów cout << (std::min)(2,1) << endl; //dziaªa poprawnie na Windows //mo»na te» zdefiniowa makrodefinicj #define NOMINMAX //mo»na u»ywa szablonów _cpp_min _cpp_max ( rednio) zaawansowane programowanie w C++ (ZPR) 24/35

25 Boost Algorithm Minmax #include <boost/algorithm/minmax.hpp> #include <boost/algorithm/minmax_element.hpp> //znajduje minimalny element w kolekcji, zªo»ono± liniowa template <class It> It std::min_element(it first, It last); //znajduje maksymalny element w kolekcji, zªo»ono± liniowa template <class It> It std::max_element(it first, It last); template <class It> //zªo»ono± 3n/2 std::pair<it,it> boost::minmax_element(it first, It last); const int TAB[] = {3,7,2,5,6,4,9}; const int SIZE = sizeof(tab)/sizeof(tab[0]); cout << "min:" << *min_element(tab, TAB + SIZE) << endl; //zwraca uporz dkowan par template <class T> tuple<t const&, T const&> boost::minmax(const T& a, const T& b); ( rednio) zaawansowane programowanie w C++ (ZPR) 25/35

26 bind bind ( rednio) zaawansowane programowanie w C++ (ZPR) 26/35

27 bind std::bind lub boost::bind <boost/bind.hpp> <functional> zast puje: - ptr_fun - mem_fun - mem_fun1 - mem_fun_ref - mem_fun1_ref - bind1st - bind2nd - compose - compose2 //definiuje _1, _2, _3, itp using namespace std::placeholders; void f(int i, int j); //Przykªad - nowy obiekt funkcyjny void f2(int j) { return f(5,j) } bind1st(ptr_fun(f),5); //wykorzystuje STL std::bind(f, 5, _1);//to samo boost::bind(f, 5, _1);//wykorzystuje bind //Przykªad - funkcja z 4 argumentami void arg4(int i1, int i2, int i3, int i4) { cout << i1 << i2 << i3 << i4; } int i1=1, i2=2, i3=3, i4=4; //Tworzy obiekt funkcyjny i wykonuje go (bind( &arg4, _4, _2, _3, _1 )) (i1, i2, i3, i4); //Wykorzystuje tylko i3 (bind( &arg4, _3, _3, _3, _3 )) (i1, i2, i3, i4); ( rednio) zaawansowane programowanie w C++ (ZPR) 27/35

28 bind bind - przykªady class Foo { public: void print(); /*... */ }; void printfun(const Foo& f) { f.print(); } std::vector<foo> v; for_each(v.begin(), v.end(), printfun ); //Wykorzystuje funkcj for_each(v.begin(), v.end(), mem_fun_ref(&foo::print) ); for_each(v.begin(), v.end(), bind(&foo::print,_1) ); std::vector<foo*> v2; for_each(v2.begin(), v2.end(), mem_fun(&foo::print) ); for_each(v2.begin(), v2.end(), bind(&foo::print,_1) ); std::vector<shared_ptr<foo> > v3; for_each(v3.begin(), v3.end(), bind(&foo::print,_1) ); ( rednio) zaawansowane programowanie w C++ (ZPR) 28/35

29 bind std::ref (boost::ref) nagªówek <functional> lub <boost/ref.hpp> std::ref(x) obiekt zawieraj cy referencj do X, mo»liwo± kopiowania, itp. std::cref(x) obiekt zaw. staª referencj do X //Przykªady vector<int> v; struct X { void f(int i); }; X x; //Dziaªania wykonuje na kopii x for_each( v.begin(), v.end(), bind( &X::f, x, _1 ) ); //Dziaªania wykonuje na obiekcie x for_each( v.begin(), v.end(), bind( &X::f, ref(x), _1 ) ); ( rednio) zaawansowane programowanie w C++ (ZPR) 29/35

30 bind bind - przykªady (2) struct Point { //Klasa u»ywana w przykªadach Point(int x, int y) : x_(x), y_(y) {} int x_; int y_; void move(int dx, int dy) { x_ += dx; y_ += dy; } }; vector<int> vi; //tutaj pomini to dodawanie warto±ci do wektora Point p(0,0); //Przykªad wykorzystania algorytmu struct Fun1 { //Obiekt funkcyjny wykorzystywany w algorytmie Point& p_; Fun1(Point& p) : p_(p) {} void operator()(int i) { p_.move(i, i); } } fun1(p); for_each(vi.begin(), vi.end(), fun1 ); //To samo bez konieczno±ci tworzenia Fun1 for_each(vi.begin(), vi.end(), bind(&point::move, ref(p), _1, _1 ) ); ( rednio) zaawansowane programowanie w C++ (ZPR) 30/35

31 bind bind - przykªady (3) class Foo { { public: void add(double d); //wykorzystuje bind void addcollection(const std::vector<double>& v) { for_each( v.begin(), v.end(), bind(&foo::add, this, _1 ) ); } //... }; //inny sposób dostarczenia operacji dla kolekcji void addcollection(const std::vector<double>& v, Foo& foo) { for_each( v.begin(), v.end(), bind(&foo::add, ref(foo), _1 ); } ( rednio) zaawansowane programowanie w C++ (ZPR) 31/35

32 bind bind - kompozycja bind( f, bind(g, _1))(x) //f (g(x)) zast puje std::compose1 oraz std::compose2 int f(int x); //funkcja wykorzystywana w przykªadach vector<int> v; //znajduje element mniejszy ni» 5 find_if( v.begin(), v.end(), bind( std::less<int>(), _1, 5 ) ); //zwraca iterator do elementu x, dla którego x < f(x) find_if( v.begin(), v.end(), bind( std::less<int>(), _1, bind(f, _1))); ( rednio) zaawansowane programowanie w C++ (ZPR) 32/35

33 bind Przeci»anie operatorów oper obiekt funkcyjny STL! std::logical_not == std::equal_to!= std::not_equal_to < std::less <= std::less_equal > std::greater >= std::greater_equal //Przykªad struct Prac { string nazw; int wiek; int pensja; }; vector<prac> p; //Sortuje po wieku sort( p.begin(), p.end(), bind( less<int>(), bind(&prac::wiek,_1), //wi zanie skªadowej bind(&prac::wiek,_2)) ); //Sortowanie po pensji sort(p.begin(), p.end(), bind(&prac::pensja,_1) < bind(&prac::pensja,_2)); ( rednio) zaawansowane programowanie w C++ (ZPR) 33/35

34 bind bind - podsumowanie tworzy max 9 argumentów wi zanie dla funkcji metod dla obiektu metod dla wska¹nika do obiektu metod dla sprytnego wska¹nika do obiektu kompozycja operatory zast puj niektóre obiekty funkcyjne z STL ( rednio) zaawansowane programowanie w C++ (ZPR) 34/35

35 bind Dzi kuj ( rednio) zaawansowane programowanie w C++ (ZPR) 35/35

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Algorytmy w C++ dla opornych!

Algorytmy w C++ dla opornych! Algorytmy w C++ dla opornych! 02.10.2011 Opracował: Krzysztof Rudlicki W-ce przewodniczący SKN TeamBit krudlicki@future-processing.com O czym będę przynudzał: O - Dlaczego będę przynudzał? O - Vector A

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

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

Programowanie Obiektowo Zorientowane w języku C++ Biblioteka STL Programowanie Obiektowo Zorientowane w języku C++ Biblioteka STL Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej

Bardziej szczegółowo

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

Wstęp do programowania obiektowego. STL - Standard Template Library Wstęp do programowania obiektowego STL - Standard Template Library 1 STL z ang. Standard Template Library, (pol. standardowa biblioteka szablonów) biblioteka C++ zawierająca pojemniki, iteratory, algorytmy,

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

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

Definicja szablonu klasy. Korzystanie z szablonu. Specjalizacja metody szablonu. class Wektor private: Typ x; Typ y; Wektor(Typ a, Typ b) :x(a), y(b) ; Wektor A(2, 5); Wektor B(2.7, 9.7); Wektor C('A', 'B'); 1 Definicja szablonu klasy. Korzystanie z szablonu. class

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

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

obiekty funkcyjne - funktory

obiekty funkcyjne - funktory #include #include #include #include #include #include #include #include #include #include using namespace

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

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

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

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy. 1 Klasy. Klasa to inaczej mówi c typ który podobnie jak struktura skªada si z ró»nych typów danych. Tworz c klas programista tworzy nowy typ danych, który mo»e by modelem rzeczywistego obiektu. 1.1 Denicja

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

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

Kontenery, algorytmy

Kontenery, algorytmy Kontenery, algorytmy Zaawansowane biblioteki programistyczne Sebastian Deorowicz Politechnika Śląska 2008 10 23 Sebastian Deorowicz (PŚl) Kontenery, algorytmy 2008 10 23 1 / 84 Plan wykładu 1 Kontenery

Bardziej szczegółowo

Programowanie i struktury danych 1 / 44

Programowanie i struktury danych 1 / 44 Programowanie i struktury danych 1 / 44 Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 5 Jan Kazimirski 1 Programowanie GPU 2/2 2 Thrust Język CUDA C bazuje na języku C języku o dosyć niskim poziomie abstrakcji ( macro assembler) Implementowanie

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

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/

Kompletna dokumentacja kontenera C++ vector w - http://www.cplusplus.com/reference/stl/vector/ STL, czyli o co tyle hałasu W świecie programowania C++, hasło STL pojawia się nieustannie i zawsze jest o nim głośno... często początkujące osoby, które nie znają STL-a pytają się co to jest i czemu go

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Programowanie generyczne w C++ Dr inż. Andrzej Grosser Cz estochowa, 2014 2 Spis treści 1. Zadanie 4 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do

Bardziej szczegółowo

STL: implementowanie algorytmów C++: STL. STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów

STL: implementowanie algorytmów C++: STL. STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów Algorytm przeszukiwania w głąb Przeszukiwanie grafu odwiedzenie wszystkich jego wierzchołków w kolejności jak na rysunku obok: C++: STL Implementowanie własnych algorytmów Reprezentacja grafu w programie

Bardziej szczegółowo

STL: kontenery C++: STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. Fabryka obiektów. Fabryka obiektów

STL: kontenery C++: STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. Fabryka obiektów. Fabryka obiektów Fabryka obiektów C++: Fabryka obiektów Klasa, której obiekty pośrednicza przy tworzeniu innych obiektów. Pomagają tworzyć obiekty, jeżeli informacja o typie odnosi się do konkretnego typu, znanego w momencie

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

STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące

STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące 1. partition 2. stable_partition 3. sort 4. stable_sort 5. partial_sort 6. partial_sort_copy 7. nth_element 8. lower_bound 9. upper_bound 10.equal_range 11.binary_search 12.merge 13.inplace_merge 14.includes

Bardziej szczegółowo

Lab. 02: Algorytm Schrage

Lab. 02: Algorytm Schrage Lab. 02: Algorytm Schrage Andrzej Gnatowski 5 kwietnia 2015 1 Opis zadania Celem zadania laboratoryjnego jest zapoznanie si z jednym z przybli»onych algorytmów sªu» cych do szukania rozwi za«znanego z

Bardziej szczegółowo

Szablon klasy std::vector

Szablon klasy std::vector Szablon klasy std::vector Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat

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

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

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Programowanie Komponentowe Zarządzanie obiektami: kontenery Programowanie Komponentowe Zarządzanie obiektami: kontenery dr inż. Ireneusz Szcześniak jesień 2016 roku Kontenery Kontener w C++ to generyczna struktura danych. Przechowuje elementy jednego dowolnego

Bardziej szczegółowo

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

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce. Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza

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

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

Programowanie w języku Java. Kolekcje

Programowanie w języku Java. Kolekcje Programowanie w języku Java Kolekcje Definicja Kolekcja to obiekt, który grupuje elementy danych (inne obiekty) i pozwala traktować je jak jeden zestaw danych, umożliwiając jednocześnie wykonywanie na

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

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

Wydajność użycia funktorów z biblioteką STL języka C++ Wydajność użycia funktorów z biblioteką STL języka C++ Irek Szcześniak, Maciek Sobczak 1 października 2005 roku Streszczenie Artykuł dotyczy wydajności użycia funktorów z biblioteką STL (Standard Template

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

1 Stos: Stack i Stack<T>

1 Stos: Stack i Stack<T> 1 Stos: Stack i Stack Przykªady z»ycia: Stos talerzy (aby wyci gn co± ze ±rodka, musimy wyci gn te z góry) Meble ªadowane do naczepy ci»arówki Osoby wsiadaj ce do samolotu i wysiadaj ce z niego. Piramida

Bardziej szczegółowo

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

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Standardowa biblioteka szablonów (Standard Template

Bardziej szczegółowo

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

C++: STL. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. Programowanie Obiektowe C++: Standard Template Library. Programowanie Obiektowe C++: Standard Template Library C++: STL Kontenery 1 Wprowadzenie Rozwiązanie większości zadań programistycznych polega na gromadzeniu i przetwarzaniu danych w ilości nieznanej w

Bardziej szczegółowo

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

C++: STL. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. Programowanie Obiektowe C++: Standard Template Library Programowanie Obiektowe C++: Standard Template Library C++: STL Kontenery - wprowadzenie 1 Wprowadzenie Rozwiązanie większości zadań programistycznych polega na gromadzeniu i przetwarzaniu danych w ilości

Bardziej szczegółowo

Szablon klasy std::list

Szablon klasy std::list Szablon klasy std::list Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania

Bardziej szczegółowo

STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące

STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące. STL: algorytmy sortujące 1. partition 2. stable_partition 3. sort 4. stable_sort 5. partial_sort 6. partial_sort_copy 7. nth_element 8. lower_bound 9. upper_bound 10.equal_range 11.binary_search 12.merge 13.inplace_merge 14.includes

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 9 - powtórzenie. 11 maja 2007 Powtórzenie materiału obiekty automatyczne, statyczne, tymczasowe, dynamiczne dziedziczenie, agregacja polimorfizm, funkcje wirtualne wzorce projektowe (strukturalne,

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

Algorytmy i Struktury Danych. Anna Paszyńska

Algorytmy i Struktury Danych. Anna Paszyńska Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;

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

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

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

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

Szablony funkcji i klas (templates)

Szablony funkcji i klas (templates) Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II.

Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II. Zadania z kolokwiów ze Wst pu do Informatyki. Semestr II. Poni»sze zadania s wyborem zada«z kolokwiów ze Wst pu do Informatyki jakie przeprowadziªem w ci gu ostatnich lat. Marek Zawadowski Zadanie 1 Napisz

Bardziej szczegółowo

10.1 Szablony... 1 10.2 Szablony funkcji... 2 10.3 Szablony klas... 5 10.4 Szablony jako wstęp do biblioteki STL... 10

10.1 Szablony... 1 10.2 Szablony funkcji... 2 10.3 Szablony klas... 5 10.4 Szablony jako wstęp do biblioteki STL... 10 .1 Szablony... 1.2 Szablony funkcji... 2.3 Szablony klas....4 Szablony jako wstęp do biblioteki STL....1 Szablony Szablony definiują sparametryzowane rodziny klas, funkcji. Szablony deklarujemy i definiujemy

Bardziej szczegółowo

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski Realizacja ekstensji klasy Paulina Strzelecka, Tomasz Roszkowski Przechowywanie obiektów (odwolañ do obiektów) w Javie typ wbudowany - tablica zbiór klas kontenerowych Paulina Strzelecka, Tomasz Roszkowski

Bardziej szczegółowo

Spis treści. Wprowadzenie 15

Spis treści. Wprowadzenie 15 Spis treści Wprowadzenie 15 1. Mechanizmy języka C++ 19 1.1. Struktura programu jednostki translacji.................. 21 1.1.1. Składnia tekstu źródłowego...................... 22 1.1.2. Preprocesor...

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do

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

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

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

Bardziej szczegółowo

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

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:

Bardziej szczegółowo

Listy i operacje pytania

Listy i operacje pytania Listy i operacje pytania Iwona Polak iwona.polak@us.edu.pl Uniwersytet l ski Instytut Informatyki pa¹dziernika 07 Który atrybut NIE wyst puje jako atrybut elementów listy? klucz elementu (key) wska¹nik

Bardziej szczegółowo

STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów

STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów. STL: implementowanie algorytmów Algorytm przeszukiwania wszerz Przeszukiwanie grafu odwiedzenie wszystkich jego wierzchołków w kolejności jak na rysunku obok: Reprezentacja grafu w programie Wierzchołki są identyfikowane przez liczby

Bardziej szczegółowo

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:

Bardziej szczegółowo

Kolekcje obiektów. Wyj tki.

Kolekcje obiektów. Wyj tki. Kolekcje obiektów. Wyj tki. Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 30.03.2017 Kolekcje obiektów Kolekcje obiektów (Java Collections) sªu»

Bardziej szczegółowo

PROGRAMOWANIE GENERYCZNE W JĘZYKU C++

PROGRAMOWANIE GENERYCZNE W JĘZYKU C++ PROGRAMOWANIE GENERYCZNE W JĘZYKU C++ Krzysztof Rogala Instytu Automatyki i Informatyki Stosowanej Wydział Elektroniki i Technik Informacyjnych Politechniki Warszawskiej CZYM JEST PROGRAMOWANIE GENERYCZNE?

Bardziej szczegółowo

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

Biblioteka STL - wstęp. Biblioteka STL - literatura. Biblioteka STL - przegląd. Biblioteka STL - kwestie techniczne Biblioteka STL - literatura Biblioteka STL - wstęp STL - Standard Template Library - Standardowa Biblioteka Szablonów Nicolai M. Josuttis - "C Biblioteka standardowa. Podręcznik programisty", Helion, 2003

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 5

Programowanie komputerowe. Zajęcia 5 Programowanie komputerowe Zajęcia 5 Tablice wielowymiarowe Tablicę dwuwymiarową możemy deklarować statycznie: typ nazwa[rozmiar1][rozmiar2]; Ma ona elementy nazwa[i][j] dla i=0,,rozmiar1-1, j=0,...,rozmiar2-1.

Bardziej szczegółowo

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

Wykład 4. Klasa List Kolejki Stosy Słowniki Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien

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

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. PROGRAMOWANIE OBIEKTOWE W C++ cz. 2 Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. Dziedziczenie Dziedziczenie jest to technika pozwalaj c na definiowanie nowej klasy przy wykorzystaniu

Bardziej szczegółowo

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

Wykorzystanie elementów z biblioteki standardowej C++: vector, list, complex oraz string. 1 Wykorzystanie elementów z biblioteki standardowej C++: vector, list, complex oraz string. 1.Biblioteka standardowa w języku C++ Biblioteka standardowa to biblioteka zawierająca podstawowe funkcje i typy

Bardziej szczegółowo

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

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula Programowanie i struktury danych Wykład 4 Dr Piotr ybula Typ wska ź nikowy int* pointer; //wskaźnik do zmiennych typu int pozwala na dostęp do dowolnego miejsca pamięci (zmienne

Bardziej szczegółowo

Listy i funkcje zaprzyjaźnione w C++

Listy i funkcje zaprzyjaźnione w C++ Listy i funkcje zaprzyjaźnione w C++ Na ostatnich zajęciach zajmowaliśmy się obsługą gniazdek w systemie Windows. Zajęcia te były w całości realizowane w aplikacji konsolowej. Takie podejście znaczenie

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych Wykªad 3 1 / 37 tekstowe binarne Wyró»niamy dwa rodzaje plików: pliki binarne pliki tekstowe 2 / 37 binarne tekstowe binarne Plik binarny to ci g bajtów zapami tanych w

Bardziej szczegółowo

Java Collections Framework

Java Collections Framework Java Collections Framework Co to jest Java Collections Framework JCF Zunifikowana architektura do reprezentacji i manipulacji kolekcjami danych. Składa się z: Interfejsów Definuje abstrakcyjne typy możliwych

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

Kolekcje - pakiet Java Collections Framework

Kolekcje - pakiet Java Collections Framework Programowanie obiektowe Kolekcje - pakiet Java Collections Framework Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Definicja kolekcji

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 7 - sprytne wskaźniki. 20 kwietnia 2007 Potrzeba współdzielenia kodu źródłowego Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania największego elementu) Szablony mechanizm

Bardziej szczegółowo

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

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ programowanie w C++ dla OWK Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ 1 Streszczenie W tym rozdziale podamy kilka najprostszych

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

( rednio)zaawansowane programowanie w C++

( rednio)zaawansowane programowanie w C++ ( rednio)zaawansowane programowanie w C++ Wykªad 2 - staªo±, wzorce projektowe Robert Nowak 2017L ( rednio)zaawansowane programowanie w C++ 1/28 Plan wykªadu podstawowe poj cia w C++ (powtórzenie) staªo±

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2 ( $%%) )'20 )*0) 1 / ) Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,

Bardziej szczegółowo