Šablony, kontejnery a iterátory
|
|
- Luděk Hruda
- před 7 lety
- Počet zobrazení:
Transkript
1 11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++
2 Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array 5 Kontejnery 6 Asociativní kontejnery 7 Další nástroje STL
3 Šablony Strana 3 / 31 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by byl specifikován konkrétní typ. Ten je dosazen podle potřeby až při použití šablony. Jedná se o specifikum jazyka C++. Implementaci metod, které obsahují šablonu je nutné psát do hlavičkového souboru. 1 template <class T> void prohod (T &a, T &b){ 2 T pom = a; 3 a = b; 4 b = pom ; 5 }
4 Šablony Strana 4 / 31 Použití šablony 1 template <class T> void prohod (T &a, T &b){ 2 T pom = a; 3 a = b; 4 b = pom ; 5 } 6 7 int main (){ 8 int a = 10; 9 int b = 11; 10 prohod (a, b); 11 cout << " A: " << a << endl ; 12 cout << " B: " << b << endl ; 13...
5 Šablony Strana 5 / 31 Šablony tříd 1 template < class T > class Sachovnice { 2 private : 3 T deska [8][8]; 4 public : 5 void vypln ( T prvek ){ 6 for ( int i =0; i <8; i ++) 7 for ( int j =0; j <8; j ++) 8 deska [i][j] = prvek ; 9 } 10 };
6 Šablony Strana 6 / 31 Použití šablony třídy 1 Sachovnice < int >* pokus = new Sachovnice < int >; 2 pokus -> vypln (0); 3 4 Sachovnice < float > pokus2 ; 5 pokus2. vypln (0.1); 6 7 delete pokus ;
7 Šablony Strana 7 / 31 Šablony o více parametrech 1 template < class T1, class T2 > class Sachovnice { 2 private : 3 T1 deska [8][8]; 4 T2 pomocnadeska [8][8]; 5 public : 6 void vypln ( T1 prvek ){ 7 for ( int i =0; i <8; i ++) 8 for ( int j =0; j <8; j ++) 9 deska [i][j] = prvek ; 10 } Sachovnice < int, char > pokus3 ;
8 Šablony Strana 8 / 31 Implicitní parametry 1 template < class T = int > 2 class Sachovnice {...}; 3 4 template < class T1, class T2 = int > 5 class JinaSachovnice {...}; 6 7 Sachovnice < > pokus ; 8 Sachovnice < int > pokus2 ; 9 10 JinaSachovnice < int > pokus ; 11 JinaSachovnice < int, char > pokus2 ;
9 Šablony Strana 9 / 31 Implementace šablony v podobě třídy Hlavičkový soubor: template < class T > class Sachovnice { }; 5 6 template < class T > Sachovnice <T >:: Sachovnice (){ } 9... Implementace metod jsou v hlavičkovém souboru! Implementační soubor: 1 # include " sachovnice.h"
10 Abstraktní datové struktury Strana 10 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array 5 Kontejnery 6 Asociativní kontejnery 7 Další nástroje STL
11 Abstraktní datové struktury Strana 11 / 31 ADT: Vector STL: Standard Template Library je knihovna šablon, která je součástí C++. Obsahuje implementace řady běžných ADT a algoritmů. Typickým zástupcem ADT z STL je šablona vector. std::vector je jednorozměrné dynamické pole bez specifikovaného typu.
12 Abstraktní datové struktury Strana 12 / 31 Příklad operací s kontejnerem std::vector 1 # include < vector > 2 # include < iostream > 3 4 int main () { 5 std :: vector <int > a (7); // Pole 7 cisel 6 std :: vector < int > b; // Pole 0 cisel 7 8 std :: cout << " Pocet prvku a je " << a. size (); 9 std :: cout << " Pocet prvku b je " << b. size (); for ( int i = 0; i < a. size (); i ++){ 12 a. at( i) = 10; // vyhazuje vyjimku out_ of_ range 13 a[i] = 10; // nekontroluje rozsah 14 std :: cout << "a[" << i << "] = " << a.at(i) << " " 15 } 16 b = a; // Bez problemu lze pouzit operator = 17...
13 Abstraktní datové struktury Strana 13 / 31 Přidávání a ubírání prvků 1 std :: vector <int > a; 2 for ( int i = 0; i < 5; i ++){ 3 a. push_back (42); 4 std :: cout << " Posledni prvek je: " << a. back (); 5 } 6 7 for ( int i = 0; i < a. size (); i ++) { 8 std :: cout << a.at(i) << \t ; 9 } while (!a. empty ()) { // Opakuj, dokud nema 0 prvku 12 a. pop_ back (); // Odeberu posledni prvek 13 } std :: cout << " Velikost " << a. size () << std :: endl ;
14 Abstraktní datové struktury Strana 14 / 31 Vícerozměrné pole 1 std :: vector < std :: vector <int >> matice (3); //3x0 2 for ( int a = 0; a < 3; a ++) { 3 matice.at(a). push_back (a +1); 4 matice.at(a). push_back (a +2); 5 matice.at(a). push_back (a +3); 6 } 7 // Nyni mame matici 3 x 3, tupa metoda! 8 // Vymyslete elegantnejsi! 9 10 for ( int y = 0; y < 3; y ++){ 11 for ( int x = 0; x < 3; x ++){ 12 std :: cout << matice.at(x). at(y) << \t ; 13 } 14 std :: cout << std :: endl ; 15 }
15 Iterátory Strana 15 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array 5 Kontejnery 6 Asociativní kontejnery 7 Další nástroje STL
16 Iterátory Strana 16 / 31 Iterátory Iterátor je de facto ukazatel pro kontejner. Význam iteratorů spočívá v tom, že unifikují přístup k různým strukturám. Bez nich by nebylo možné vytvářet generické algoritmy. Bezpečnejší než indexy nebo ukazatele. Ke kontejnerům jsou předdefinovány užitečné iterátory na začátek (.begin()), za konec (.end()), atp. Iterátorů je celá řada (vstupní, výstupní, aj.).
17 Iterátory Strana 17 / 31 Průchod polem pomocí iterátorů 1 # include < vector > 2 3 std :: vector <int > pole (20); 4 for ( std :: vector <int >:: iterator temp = pole. begin (); 5 temp!= pole. end (); temp ++){ 6 * temp = 0; 7 } vectorem lze procházet i pomocí [] nebo metody at(). Doporučena je raději metoda at(), protože v případě vstupu na neplatnou pozici vyhodí výjimku std::out of range. Velmi elegantně lze využít v tomto případě typ auto.
18 Iterátory Strana 18 / 31 Využití iterátorů pro změny ve vectoru 1 // Vlozim pred prvni prvek v1. insert (v1. begin (), -100); 3 // Vlozim na konec 3 krat v1. insert (v1.end (),3,500); 5 // Vlozim cely vektor v1 do v2 6 v2. insert (v2. begin ()+2, v1. begin (), v1.end ()); 7 8 // Mazu prvek pod iteratorem 9 v2. erase (it ); 10 // Mazu vsechny prvky ve v2 11 v2. erase (v2. begin (), v2.end ()); 12 v2. clear ();
19 Array Strana 19 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array 5 Kontejnery 6 Asociativní kontejnery 7 Další nástroje STL
20 Array Strana 20 / 31 Array: náhrada pole 1 # include < iostream > 2 # include < array > 3 4 int main (){ 5 // inicializace pole 6 std :: array <int, 5> pole {0,1,2,3,4}; 7 std :: array <int, 5> pole2 = {0,1,2,3,4}; 8 // pristup na pozici 9 pole.at (0) = 10; 10 std :: cout << pole2.at (0) << std :: endl ; 11 // pruchod pole, lze i iteratory 12 for ( auto & cislo : pole ) std :: cout << cislo << " "; 13 std :: cout << std :: endl ; 14 // kontrola velikosti, lze i empty () 15 std :: cout <<" Velikost : " << pole. size () <<std :: endl ; 16...
21 Kontejnery Strana 21 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array 5 Kontejnery 6 Asociativní kontejnery 7 Další nástroje STL
22 Kontejnery Strana 22 / 31 Další kontejnery a jejich funkce Kontejnery většinou podporují insert, erase a clear. základní array pouze čtení a zápis kamkoliv základní vector front, back, push/pop back, at/[] (forward )list vector bez at/[]+ push/pop front deque vector + push front, pop front kontej. queue push,pop,front,back,size,empty adaptéry stack push, top, pop, size, empty priority que queue asoc. set 1 kontej. map multiset multimap 1 Od C++11 také unordered set, multiset, map, multimap
23 Kontejnery Strana 23 / 31 Základní rozdíl mezi kontejnery array (C++11) Nádrada C-like polí. Rychlý přísup k konstantním čase. Nelze měnit velikost. vector Prvky musí být za sebou v paměti rychlé čtení odkudkoli. Umožňuje rychlé mazání a přidávání na konec (pokud není potřeba realokace). Pomalé mazání z ostatních míst vektoru (lineární čas, musíme seznam posunout).
24 Kontejnery Strana 24 / 31 Základní rozdíl mezi kontejnery list Prvky nemusí být za sebou v paměti. Umožňuje vkládat prvek v konstantním čase (jakmile je pozice nalezena). Pomalý přístup po čtení (lineární čas, musíme projít). forward list (C++11) Zabere méně paměti než list. Podporuje pouze průchod od čela. deque Umožňuje přístup v konstantní čase pro čtení. Lze v konstantním čase přidávat na oba konce nebo odbírat. Vhodná nádrada vectoru, pokud je nutné měnit oba konce.
25 Asociativní kontejnery Strana 25 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array 5 Kontejnery 6 Asociativní kontejnery 7 Další nástroje STL
26 Asociativní kontejnery Strana 26 / 31 Asociativní kontejnery Jedná se o setříděné kontejnery, ale nechápeme je obvykle jako klasická pole hodnot. Strukturou lze však klasicky sekvenčeně projít. set je množina. map je hash, kde prvek je (místo pozice) identifikován klíčem. Ke klíči se vztahuje příslušná hodnota. multi varianty kontejnerů umožňují duplicitní prvky/klíče. unordered varianty jsou pro nesetříděné struktury. Mohou být rychlejší.
27 Asociativní kontejnery Strana 27 / 31 Asoc. kontejner set 1 # include <set > 2 # include < iterator > std :: multiset <int > mnozina ; 5 6 mnozina. insert (4); 7 mnozina. insert (3); 8 mnozina. insert (5); 9 10 std :: multiset <int >:: iterator pos ; 11 for ( pos = mnozina. begin (); pos!= mnozina. end (); ++ pos ){ 12 cout << * pos << ; 13 }
28 Asociativní kontejnery Strana 28 / 31 Asoc. kontejner map (hash) 1 # include <map > std :: map < string, string > slova ; 4 5 // ulozeni hodnoty 6 slova [" jmeno "] = " david "; 7 slova [" prijmeni "] = " prochazka "; 8 // vypis hodnoty 9 std :: cout << " Jmeno :" << slova [" jmeno "]; 10 // vypis velikost 11 std :: cout << " Velikost :" << slova. size (); // vlozeni celeho paru hodnot 14 // nezbytne pro multimap, protoze klice jsou duplic. 15 slova. insert ( 16 std :: pair < string, string >(" jmeno "," hodnota " ));
29 Asociativní kontejnery Strana 29 / 31 Průchod mapem 1 2 // projdu v cyklu for a vypisuji klic ( first ) 3 // a hodnotu ( second ) 4 for ( std :: map < string, string >:: iterator it = 5 slova. begin (); it!= slova. end (); it ++) { 6 std :: cout << it -> first << " " << it -> second << " "; 7 }
30 Další nástroje STL Strana 30 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array 5 Kontejnery 6 Asociativní kontejnery 7 Další nástroje STL
31 Další nástroje STL Strana 31 / 31 Další nástroje STL Funktory (equal to<int>(a, b), greater, less,...), kopírování, náhrady, generátory, vyhledávání (find(v.begin(), v.end(), 4)), třídění (sort(v.begin(), v.end()),...
Šablony, kontejnery a iterátory
7. října 2010, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 21 Šablona funkce/metody Šablona je obecný popis (třídy, funkce) bez toho, že by
PB161 Programování v jazyce C++ Přednáška 3
PB161 Programování v jazyce C++ Přednáška 3 Kontejnery Iterátory Algoritmy Nikola Beneš 4. října 2016 PB161 přednáška 3: kontejnery, iterátory, algoritmy 4. října 2016 1 / 25 Standardní knihovna C++ Už
Vector datový kontejner v C++.
Vector datový kontejner v C++. Jedná se o datový kontejner z knihovny STL jazyka C++. Vektor je šablona jednorozměrného pole. Na rozdíl od "klasického" pole má vector, mnoho užitečných vlastností a služeb.
Množina v C++ (set, multiset).
Množina v C++ (set, multiset). Množina je datová struktura, ve které jsou uloženy nějaké prvky. V množině nesmí být dva stejné prvky. Naopak multimnožina může obsahovat i stejné prvky. Nad množinou lze
PB161 Programování v jazyce C++ Přednáška 3
PB161 Programování v jazyce C++ Přednáška 3 Kontejnery Iterátory Algoritmy Nikola Beneš 2. října 2018 PB161 přednáška 3: kontejnery, iterátory, algoritmy 2. října 2018 1 / 27 Automatická dedukce typů (od
PB161 6. přednáška (26. října 2015)
PB161 6. přednáška (26. října 2015) Standardní knihovna C++ obsahuje řadu částí, některé už jsme viděli (strings, I/O streams) mimo jiné obsahuje i knihovní funkce ze standardní knihovny jazyka C jiné
PB161 Programování v jazyku C++
PB161 Programování v jazyku C++ Textové řetězce (2. část) Vstupy a výstupy STL Základ (0. část) Manipulátory Kontejnery Iterátory Algoritmy Řetězce ve stylu C++ Používá se třída string. Řetězec ve stylu
Šablony funkcí a tříd (Templates) Genericita
Šablony funkcí a tříd (Templates) Genericita Šablony funkcí Motivace přetížíme funkci pro výpočet minima ze dvou hodnot: int minimum(int a, int b) { return (a
PB161 Programování v jazyce C++ Přednáška 6
PB161 Programování v jazyce C++ Přednáška 6 Kontejnery Iterátory Algoritmy Nikola Beneš 26. října 2015 PB161 přednáška 6: kontejnery, iterátory, algoritmy 26. října 2015 1 / 37 Standardní knihovna C++
Abstraktní datové typy
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
Iterátory v C++. int pole[20]; for (int *temp = pole, temp!= &pole[20]; temp++) { *temp = 0;
Iterátory v C++. Iterátor v C++ je vlastně taková obdoba ukazatelů pro kontejnery. Dříve, než se dostaneme k bližšímu vysvětlení pojmu iterátor, ukážeme si jednoduchý příklad, jak pracovat s obyčejným
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Jazyk C++ II. STL knihovna kontejnery část 2
Jazyk C++ II STL knihovna kontejnery část 2 AR 2013/2014 Jazyk C++ II Asociativní kontejnery Slovníky u kterých pořadí dat nemá smysl. Kontejner si sám určuje, kam který údaj uloží. Údaje mají tvar klíč/hodnota.
map, multimap - Asociativní pole v C++.
map, multimap - Asociativní pole v C++. Jedná se o asociativní pole. V asociativním poli jsou uloženy hodnoty ve tvaru (klíč,hodnota), kde klíč je vlastně "index" prvku. Klíčem může být libovolný objekt,
Jazyk C++ II. STL knihovna kontejnery část 1
Jazyk C++ II STL knihovna kontejnery část 1 AR 2013/2014 Jazyk C++ II STL kontejnery Kontejnery jsou třídy, jejichž instance slouží k uskladňování dat. Každý druh kontejneru má své výhody a nevýhody. Kontejnery
Hornerovo schéma. je algoritmus výpočtu hodnoty polynomu P(x) v bodě x 0. eliminuje výpočet i-té mocniny převodem na postupné násobení.
Hornerovo schéma je algoritmus výpočtu hodnoty polynomu P(x) v bodě x 0 n + n 1 + L + + n n 1 1 P( x) = a x a x a x a eliminuje výpočet i-té mocniny převodem na postupné násobení 0 Vstup: Algoritmus výpočtu
Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné
Množina čísel int stl-set-int.cpp
Řetězce, pole a STL V C++ je výhodné pro práci s řetězci použít třídu string, funkce C jsou stále k dispozici cstring, ukazatele a pole lze stále používat stejně, jako v C, použití iterátorů a dalších
Standardní algoritmy vyhledávací.
Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární
PROGRAMOVÁNÍ V C++ CVIČENÍ. Michal Brabec
PROGRAMOVÁNÍ V C++ CVIČENÍ Michal Brabec ARCHITECTURE Input 2 / 15 TASK Vytvořte základní data pro filesystem (zatím v main) Jednu autorizační autoritu Jeden registr souborů Cyklus který zpracovává vstup
Základní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
Funkční objekty v C++.
Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční
Standardní algoritmy v C++.
Standardní algoritmy v C++. Standardní algoritmy jsou součástí STL. Jedná se o spoustu užitečných šablon funkcí, které za nás naprogramoval někdo jiný. Na nás je jen, abychom je používali. Také si ukážeme
Dynamické datové struktury I.
Dynamické datové struktury I. Seznam. Fronta. Zásobník. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz
2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
Konstruktory a destruktory
Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,
Programování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
Da D to t v o é v ty t py IB111: Datové typy
Datové typy IB111: Datové typy Data a algoritmizace jaká data potřebuji pro vyřešení problému? jak budu data reprezentovat? jaké operaci s nimi potřebuji provádět? Navržení práce s daty je velice důležité
Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.
Obsah přednášky: Definice pojmů o datový typ, o abstraktní datový typ Datové struktury Abstraktní datové typy a jejich implementace o Fronta (Queue) o Zásobník (Stack) o Množina (Set) Algoritmizace (Y36ALG),
OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů... 8-1 8.2 Standardně zavedené proudy... 8-1 8.
David MATOUŠEK OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PØÍKLADECH Praha 2011 David Matoušek Objektové programování v C++ v pøíkladech Lektoroval Ing. Bohumil Brtník, Ph.D. Bez pøedchozího písemného svolení nakladatelství
ADT/ADS = abstraktní datové typy / struktury
DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní
Algoritmizace prostorových úloh
INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová
Kolekce, cyklus foreach
Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro
Programování v C++ 2, 8. cvičení
Programování v C++ 2, 8. cvičení návrhový vzor iterátor 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky
Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech
Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech cíl: vytvořit třídu inf_system pro ukládání informací o studentech a zaměstnancích působících na fakultě příklad použití: int main() { inf_system
Datové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
Pole a kolekce. v C#, Javě a C++
Pole a kolekce v C#, Javě a C++ C# Deklarace pole typ_prvku_pole[] jmeno_pole; Vytvoření pole jmeno_pole = new typ_prvku_pole[pocet_prvku_pole]; Inicializace pole double[] poled = 4.8, 8.2, 7.3, 8.0; Java
PB161 Programování v jazyce C++ Přednáška 10
PB161 Programování v jazyce C++ Přednáška 10 Šablony Nikola Beneš 27. listopadu 2017 PB161 přednáška 10: šablony 27. listopadu 2017 1 / 33 Šablony PB161 přednáška 10: šablony 27. listopadu 2017 2 / 33
<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************
zdroje/zdroje.xml
Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy
Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou
Lineární datové struktury
Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 13. března 2017 Jiří Dvorský (VŠB TUO) Lineární datové
Jazyk C++, některá rozšíření oproti C
Karel Müller, Josef Vogel (ČVUT FIT) Jazyk C++, některá rozšíření oproti C BI-PA2, 2011, Přednáška 1 1/22 Jazyk C++, některá rozšíření oproti C Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra
Programování v C++ 3, 3. cvičení
Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového
Datové struktury 1: Základní datové struktury
Datové struktury 1: Základní datové struktury prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní
Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků
Programování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
PB161 Programování v jazyce C++ Přednáška 10
.. PB161 Programování v jazyce C++ Přednáška 10 Šablony Nikola Beneš 23. listopadu 2015 PB161 přednáška 10: šablony 23. listopadu 2015 1 / 29 K zamyšlení Jaký je rozdíl mezi new int[10] a new int[10]()?
Abstraktní třídy, polymorfní struktury
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství
PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory
PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových
Digitální učební materiál
Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_149_IVT Autor: Ing. Pavel Bezděk Tematický okruh:
Abstraktní datové typy: zásobník
Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní
Dynamické datové struktury IV.
Dynamické datové struktury IV. Prioritní fronta. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz (Katedra
Programování v C++ 2, 7. cvičení
Programování v C++ 2, 7. cvičení spojový seznam 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky Dědění
boolean hasnext() Object next() void remove() Kolekce
11. Kontejnery Kontejnery Kontejnery jako základní dynamické struktury v Javě Kolekce, iterátory (Collection, Iterator) Seznamy (rozhraní List, třídy ArrayList, LinkedList) Množiny (rozhraní Set, třída
Martin Flusser. December 15, 2016
ZPRO cvičení 9 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague December 15, 2016 Outline I 1 Outline 2 Struktura 3 Struktury cv 4 Lineární spojový
Konec a tak. PB173 Programování v C++11. Vladimír Štill, Jiří Weiser. Fakulta Informatiky, Masarykova Univerzita. 15.
Konec a tak PB173 Programování v C++11 Vladimír Štill, Jiří Weiser Fakulta Informatiky, Masarykova Univerzita 15. prosince 2014 Konec a tak PB173 15. prosince 2014 1 / 15 Náplň Perf constexpr initializer
Programování v C++ 1, 6. cvičení
Programování v C++ 1, 6. cvičení dědičnost, polymorfismus 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
přetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního
přetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - operátor je speciální
ABSTRAKTNÍ DATOVÉ TYPY (ADT)
ABSTRAKTNÍ DATOVÉ TYPY (ADT) hierarchie abstrakcí: nejvyšší úroveň ZOO DruhZvirat celá čísla, řetězce nejnižší úroveň bity Abstrahujeme od - reprezentace (implementace) dat - realizace (implementace) operací
Mělká a hluboká kopie
Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta
PB161 Programování v jazyce C++ Přednáška 8
.. PB161 Programování v jazyce C++ Přednáška 8 Výjimky Správa prostředků (RAII) Nikola Beneš 9. listopadu 2015 PB161 přednáška 8: výjimky, RAII 9. listopadu 2015 1 / 24 . PB161 přednáška 8: výjimky, RAII
Maturitní téma: Programovací jazyk JAVA
Maturitní téma: Programovací jazyk JAVA Insert Sort (třídění vkládáním) 1. Jako setříděnou část označíme první prvek pole. Jako nesetříděnou část označíme zbytek pole. 2. Vezmeme první (libovolný) prvek
Programovanie
Programovanie 3. 2012-2013 10. Prednáška - STL Ing. František Gyárfáš, PhD. gyarfas@ii.fmph.uniba.sk http://www.ii.fmph.uniba.sk/~gyarfas/ template class POLE {... public: bool vloz(const T
Více o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
Programování v C++ 1, 1. cvičení
Programování v C++ 1, 1. cvičení opakování látky ze základů programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí procvičených
for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }
Pole Kdybychom v jazyce C++chtěli načíst větší počet čísel nebo znaků a všechny bylo by nutné všechny tyto hodnoty nadále uchovávat v paměti počítače, tak by bylo potřeba v paměti počítače alokovat stejný
Programování v C++ 1, 17. cvičení
Programování v C++ 1, 17. cvičení výjimky 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 Shrnutí minule procvičené látky Binární vyhledávací
Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016
ZPRO cvičení 2 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague October 17, 2016 Outline I 1 Outline 2 Proměnné 3 Proměnné - cvičení 4 Funkce 5 Funkce
Digitální učební materiál
Digitální učební materiál Číslo projektu: CZ.1.07/1.5.00/34.0548 Název školy: Gymnázium, Trutnov, Jiráskovo náměstí 325 Název materiálu: VY_32_INOVACE_145_IVT Autor: Ing. Pavel Bezděk Tematický okruh:
Řetězce. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016
Řetězce Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016 Programování v C++, A7B36PJC 4/2016, Lekce 9c https://cw.fel.cvut.cz/wiki/courses/a7b36pjc/start
24. listopadu 2013, Brno Připravil: David Procházka
24. listopadu 2013, Brno Připravil: David Procházka Dědičnost Základy objektového návrhu Časná a pozdní vazba Strana 2 / 22 Obsah přednášky 1 Časná a pozdní vazba 2 Rozhraní pro dědičnost 3 Konstruktory
POČÍTAČE A PROGRAMOVÁNÍ
POČÍTAČE A PROGRAMOVÁNÍ Vícerozměrná statická a dynamická pole, Pole polí Miroslav Vavroušek PPI 08 V1.1 Opakovaní z minulé přednášky Datová pole Jednorozměrná statická datová pole Dynamická datová pole
Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody
Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro
ALG 04. Zásobník Fronta Operace Enqueue, Dequeue, Front, Empty... Cyklická implementace fronty. Průchod stromem do šířky
LG 04 Zásobník Fronta Operace nqueue, equeue, Front, mpty... yklická implementace fronty Průchod stromem do šířky Grafy průchod grafem do šířky průchod grafem do hloubky Ořezávání a heuristiky 1 Zásobník
ALG 09. Radix sort (přihrádkové řazení) Counting sort. Přehled asymptotických rychlostí jednotlivých řazení. Ilustrační experiment řazení
ALG Radix sort (přihrádkové řazení) Counting sort Přehled asymptotických rychlostí jednotlivých řazení Ilustrační experiment řazení Radix sort Neseřazeno Řaď podle. znaku Cbb DaD adb DCa CCC add DDb adc
ZPRO v "C" Ing. Vít Hanousek. verze 0.3
verze 0.3 Hello World Nejjednoduší program ukazující vypsání textu. #include using namespace std; int main(void) { cout
Dědičnost. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 23.března
Dědičnost Cíle lekce Cílem lekce je naučit se pracovat a využívat dědičnosti při návrhu a tvorbě programů. Lekce je zaměřena hlavně na jednoduchou dědičnost. Bude rovněž vysvětlen rozdíl mezi dědičností
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Objektov orientované programování. C++ Akademie SH. 7. Objektov orientované programování. Michal Kvasni ka. Za áte níci C++ 2.
C++ Akademie SH Za áte níci C++ 2. kv tna 2011 Obsah 1 Objektov orientované programování Obsah Objektov orientované programování 1 Objektov orientované programování P et ºování Jev, díky kterému m ºeme
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
10. března 2015, Brno Připravil: David Procházka. Programovací jazyk C++
10. března 2015, Brno Připravil: David Procházka Práce s výjimkami Programovací jazyk C++ K čemu slouží výjimky Strana 2 / 25 Obsah přednášky 1 K čemu slouží výjimky 2 Vytváření výjimek 3 Speciální případy
Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4
Fronta (Queue) Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Fronta uplatňuje mechanismus přístupu FIFO first
Ukazatele, dynamická alokace
Ukazatele, dynamická alokace Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad, Martin Mazanec Karel Richta,
Abstraktní datové typy
Datové struktury a algoritmy Abstraktní datové typy Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta a kol., 2013 Datové struktury a algoritmy,
Dynamické datové typy a struktury
.. a Programovací techniky doc. Ing. Jiří Rybička Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Programovací techniky a 2 / 18 Uchovávají adresu v paměti Programovací techniky a 2 / 18 Uchovávají
Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu
Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu Ukazatel a dynamické datové struktury v prostředí DELPHI Důležitým termínem a konstrukčním programovým prvkem je typ UKAZATEL. Je to vlastně
Amortizovaná složitost. Prioritní fronty, haldy (binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost
Amortizovaná složitost. Prioritní fronty, haldy binární, d- regulární, binomiální, Fibonacciho), operace nad nimi a jejich složitost 1. Asymptotické odhady Asymptotická složitost je deklarována na základě
Programování v C++ První kroky
Programování v C++ První kroky Karel Mozdřeň 29. října 2009 1 Obsah 1 Úvod 5 1.1 Pro koho je kniha určena...................... 5 1.2 Proč první kroky?.......................... 5 2 Začínáme 6 2.1 Hello,
Pole, množina, tabulka
Karel Müller, Josef Vogel (ČVUT FIT) Pole, množina, tabulka BI-PA2, 2011, Přednáška 11 1/53 Pole, množina, tabulka Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,
IRAE 07/08 Přednáška č. 7. Začátek (head)
Fronta (Queue) FIFO First In First Out (první dovnitř první ven) Vložení položky (Enqueue) Vyjmutí položky (Dequeue) Přidávání prvků Konec (Tail) Začátek (head) na jedné straně (konec) Odebírání prvků
PB161 Programování v jazyce C++ Přednáška 4
PB161 Programování v jazyce C++ Přednáška 4 Přetěžování funkcí Konstruktory a destruktory Nikola Beneš 9. října 2017 PB161 přednáška 4: přetěžování funkcí, konstruktory, destruktory 9. října 2017 1 / 20
Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií Ústav automatizace a měřící techniky. Semestrální projekt
Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních technologií Ústav automatizace a měřící techniky Semestrální projekt Tvorba úloh pro výuku předmětu: Praktické programování v C/C++
2 Datové struktury. Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky
Pole Seznam Zásobník Fronty FIFO Haldy a prioritní fronty Stromy Hash tabulky Slovníky 25 Pole Datová struktura kolekce elementů (hodnot či proměnných), identifikovaných jedním nebo více indexy, ze kterých
Lineární datové struktury
Lineární datové struktury doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 5. března 2019 Jiří Dvorský (VŠB TUO) Lineární datové
bfs, dfs, fronta, zásobník, prioritní fronta, halda
bfs, dfs, fronta, zásobník, prioritní fronta, halda Petr Ryšavý 20. září 2016 Katedra počítačů, FEL, ČVUT prohledávání grafů Proč prohledávání grafů Zkontrolovat, zda je sít spojitá. Hledání nejkratší
2. Mřížky / Záplavové vyplňování
2. Mřížky / Záplavové vyplňování BI-EP2 Efektivní programování 2 LS 2017/2018 Ing. Martin Kačer, Ph.D. 2011-18 Martin Kačer Katedra teoretické informatiky Fakulta informačních technologií České vysoké
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole
Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné
Připravil: David Procházka. Programovací jazyk C++
17. října 2011, Brno Připravil: David Procházka Práce s výjimkami Programovací jazyk C++ Obecně Strana 2 / 21 Jak se může program zachovat při chybě Dříve byl obvyklý způsob zavolat metodu abort. Metoda