1 / 15

Seminář C++

Seminář C++. 11. cvičení STL, Trolltech. Ing. Jan Mikulka. STL. Standard Template Library makra, globální proměnné, datové typy. Funkce podle hlavičkových souborů. < alghoritm > nabízí funkce sloužící k provádění operací na prvcích kontejnerů pomocí iterátorů < assert.h >

Télécharger la présentation

Seminář C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Seminář C++ 11. cvičení STL, Trolltech Ing. Jan Mikulka

  2. STL • Standard Template Library • makra, globální proměnné, datové typy

  3. Funkce podle hlavičkových souborů • <alghoritm> • nabízí funkce sloužící k provádění operací na prvcích kontejnerů pomocí iterátorů • <assert.h> • makro testující podmínku, není-li splněna, přeruší program • <complex> • funkce pro operace v komplexním oboru čísel • <ctype.h> • test znaků na písmena / čísla / malá / velká /...

  4. Funkce podle hlavičkových souborů • <exception> • funkce, které slouží ke zpracování chyb • <functional> • funkční objekty (instance tříd) s přetíženým operátorem (), lze použít jako typ • <iomanip> • obsahuje manipulátory s parametrem sloužící k formátování vstupu a výstupu • <ios> • obsahuje manipulátory bez parametru pro formátování vstupu a výstupu a proudové třídy

  5. Funkce podle hlavičkových souborů • <istream> • obsahuje proudovou třídu istream • <iterator> • obsahuje šablony iterátorů a funkce s iterátory • <locale.h> • funkce a makra určující národní prostředí • <locale> • přetížené funkce pro klasifikaci a konverzi znaků

  6. Funkce podle hlavičkových souborů • <math.h> • matematické funkce • <memory> • alokace dočasné paměti, iterátory • <new> • dynamické přidělování paměti • <numeric> • numerické výpočty pomocí operátorů

  7. Funkce podle hlavičkových souborů • <ostream> • obsahuje třídu ostream a několik manipulátorů • <setjmp.h> • makra a datové typy pro nelokální skoky • <signal.h> • funkce a konstanty pro zpracování signálů • <stdarg.h> • makra pro práci s funkcemi s proměnným počtem parametrů

  8. Funkce podle hlavičkových souborů • <stdio.h> • funkce pro práci s proudy / datovými proudy • <stdlib.h> • alokace paměti, operace s programem, převody znaků • <string.h> • funkce pro práci s řetězci • <time.h> • funkce času, počet tiků od startu procesu

  9. Funkce podle hlavičkových souborů • <valarray> • matematické funkce pro množiny prvků • <wchar.h>, <wctype.h> • nástroje pro práci s 16-bitovými znaky

  10. STL - třídy • Kontejnery – implementují nejpoužívanější modely zpracování a ukládání dat – množiny, zásobníky. • Iterátory – slouží k jednoduchému přístupu k prvkům v kontejnerech • Proudové třídy – řízení datových proudů • Locale – přizpůsobení národním zvyklostem • Matematické třídy – valarray (paralelní výpočty), complex • Diagnostické třídy – umožňují identifikaci typu v době běhu programu (výhodné u ukazatelů a referencí, zpracování výjimek) • Další pomocné třídy – dynamická alokace paměti, ...

  11. Příklad na třídu valarray #include <valarray.h> #include <iostream.h> using namespace std; void printarray(ostream &s, valarray<int> &array) { for (int i = 0; i < array.size(); i++) s << array[i] << " "; s<<endl; } int main(int argc, char* argv[]) { int ibuf1[10] = {0,1,2,3,4,5,6,7,8,9}; int ibuf2[10] = {0,1,2,3,4,5,6,7,8,9}; valarray<int> array1(ibuf1,10); valarray<int> array2(ibuf2,10); printarray(cout, array1); printarray(cout, array2); valarray<int> sum = array1 + array2; printarray(cout, sum); getchar(); return 0; }

  12. Příklad na třídu queue int main(int argc, char* argv[]) { queue<int> Q; Q.push(8); Q.push(7); Q.push(6); Q.push(2); cout << "Pocet prvku ve fronte: " << Q.size() << endl; cout << "Vybiram element : " << Q.front() << " z fronty." << endl; Q.pop(); cout << "Pocet prvku ve fronte: " << Q.size() << endl; getchar(); return 0; }

  13. Příklad na třídu string int main(int argc, char* argv[]) { string test; while(test.empty() || test.size() <= 5) { cout << "Type a string between 5 and 100 characters long. " << endl; cin >> test; } cout << "Changing the third character from " << test[2] << " to * " << endl; test[2] = '*'; cout << "now its: " << test << endl << endl; cout << "Identifying the middle: "; test.insert(test.size() / 2, "(the middle is here!)"); cout << test << endl << endl; cout << "I didn't like the word 'middle',so " "instead, I'll say:" << endl; test.replace(test.find("middle",0), 6, "center"); cout << test << endl; cin >> test; return 0; }

  14. Příklad na třídu complex int main(int argc, char* argv[]) { complex<double> a(1.2, 3.4); complex<double> b(-9.8, -7.6); a += b; a /= sin(b) * cos(a); b *= log(a) + pow(b, a); cout << "a = " << a << ", b = " << b << endl; getchar(); return 0; }

  15. Zadání cvičení • Napište program s využitím STL (valarray, complex, string a stream). V programu vygenerujte 2 pole po 10 komplexních číslech a ty pomocí valarray sečtěte. Napište funkci print, která bude jednotlivá pole vypisovat. Dodržte následující deklaraci: void print(ostream &os,valarray<cpx_double> array, string head) kde cpx_double je typ complex<double> • Za bonusový bod nahraďte funkci print přetíženým operátorem << • Výstupem programu bude:

More Related