Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék Az STL könyvtár Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék Ficsor Lajos A C++ programozási nyelv 10. (STL)
A C++ programozási nyelv 10. (STL) Az STL STL: Standard Template Library Az ANSI C++ szabvány része Feladata: a leggyakoribb absztrakt adatszerkezetek kezelése Részei: container-ek algoritmusok iterátorok Ficsor Lajos A C++ programozási nyelv 10. (STL)
A C++ programozási nyelv 10. (STL) A container fogalma A container olyan osztály, amely objektumokat tartalmazó szerkezetet definiál. Az STL-ben a container-ek célja absztrakt adatszerkezetek modellezése. Ficsor Lajos A C++ programozási nyelv 10. (STL)
Algoritmus és iterátor fogalma Az algoritmusok olyan műveletek, amelyek adatszerkezettől függetlenül megfogalmazhatók. Az iterátor olyan osztály, amelynek célja egy adatszerkezet elemeinek elérése. Az iterátor teszi lehetõvé a container-ek és az algoritmusok függetlenítését. Ficsor Lajos A C++ programozási nyelv 10. (STL)
Container, algoritmus és iterátor 1. Ficsor Lajos A C++ programozási nyelv 10. (STL)
Container, algoritmus és iterátor 2. Ficsor Lajos A C++ programozási nyelv 10. (STL)
Container-ek az STL-ben bitset deque list map multimap set multiset priority-queue stack vector Ficsor Lajos A C++ programozási nyelv 10. (STL)
A C++ programozási nyelv 10. (STL) Iterátorok Egy iterátor objektumra mindig alkalmazható az indirekció operátor (*) fajtájától függően a pointer-aritmetika különböző elemei. Hierarchiába rendezhetők Ficsor Lajos A C++ programozási nyelv 10. (STL)
Iterátorokkal végezhető műveletek A hierarchiában feljebb lévő iterátor használható egy lejjebb lévő helyett. A C pointer egy Random access iterátor Ficsor Lajos A C++ programozási nyelv 10. (STL)
A C++ programozási nyelv 10. (STL) Algoritmusok 1. Olyan függvény-template-ek, amelyek általában iterátor típusú és egyéb paramétereket várnak. Pl: template <class InputIterator, class T> InputIterator find(InputIterator first, InputIterator last, const T value ) { while( first != last && *first != value ) ++first; return first; } Ficsor Lajos A C++ programozási nyelv 10. (STL)
A C++ programozási nyelv 10. (STL) Algoritmusok 2. Mivel minden pointer iterátor, ez a függvény akár egy egész tömbre is alkalmazható: int* a = new int[100]; int* hely; hely = find( a, a + 10, 1000 ); Ficsor Lajos A C++ programozási nyelv 10. (STL)