C++ Prof. Peter Sommerlad Fredy Ulmer
|
|
- Katarina Dressler
- vor 6 Jahren
- Abrufe
Transkript
1 Programmieren 3 C++ Standardbibliothek Einführung Prof. Peter Sommerlad Fredy Ulmer
2 Was Sie diese Woche erwartet: Eine weitere Warnung! std::vector<> Iteratoren Algorithmen std::set<> std::map<> Sie kennen schon: o std::string o std::cin o std::cout Prog3: P. Sommerlad, F. Ulmer 2
3 C++ ist nicht Java noch eine Warnung C++ wie auch die STL sind für Profis gemacht wir hoffen, Sie dazu zu machen! C++ HSR Programmierer sind für die korrekte Nutzung der Klassen und Algorithmen verantwortlich manchmal komische Compilerfehlermeldungen manchmal "eigenartiges" Verhalten der Programme manchmal definiert undefiniertes Verhalten i.d.r. werden keine Exceptions geworfen o fragen Sie ihren Betreuer! Prog3: P. Sommerlad, F. Ulmer 3
4 C++ ist nicht Java C++ Wahrheitswerte In C++ gibt es bool (nicht wie in Java boolean) bool ist kompatibel mit int o ACHTUNG: manchmal verwirrend, wenn bool ungewollt bei Rechenoperationen mitmacht Wahrheit ist grosszügig definiert: o 0 ist falsch o alles andere ist wahr, das gilt auch für nahezu beliebige Typen man kann also fast alles als Bedingung verwenden Prog3: P. Sommerlad, F. Ulmer 4
5 std::vector<> Der Standardcontainer für die Sammlung gleichartiger Elemente Es gibt bei boost ein "gleichartiges" Element für heterogene Sammlungen ( boost::any ) Man kann hinten anfügen push_back() o Grösse wird automatisch angepasst! Zugriff über Index ist möglich v[5] Initialisierung über Iteratoren möglich o kommt noch Prog3: P. Sommerlad, F. Ulmer 5
6 std::vector<> Kurze Einführung Definition eines vectors (Headerfile <vector>) vector<int> V(10); Länge eines vectors: cout << V.size() << endl; Zugriff auf ein Element: V[5] = 15; cout << V[7] << endl; Datentyp der Elemente im vector Vorsicht: die Indizes gehen von 0 bis (max-1), falsche Indizes werden nicht überprüft! o Es gibt keine Exceptions bei Zugriff ausserhalb! Prog3: P. Sommerlad, F. Ulmer 6
7 std::vector Nutzung Element an vector anhängen: V.push_back(99); Letztes Element löschen: V.pop_back(); Alle Elemente im vector löschen V.clear(); Anzahl der Element ermitteln cout << V.size(); Prog3: P. Sommerlad, F. Ulmer 7
8 Idiom: Einlesen in Schleife Um einen vector von der Standardeingabe zu füllen, benötigt man im einfachen Fall eine Schleife. o Ein Stream Objekt (cin) kann auch als Schleifenbedingung dienen! (DEMO) #include <iostream> #include <vector> using namespace std; int main(){ vector<int> v; int input; while(cin >> input) { v.push_back(input); } } #include <iostream> #include <vector> using namespace std; int main(){ vector<int> v; int input; while(cin) { cin >> input; v.push_back(input); } } Prog3: P. Sommerlad, F. Ulmer 8
9 Iteratoren C++ vs. Java Java kennt 2 Arten von Iteratoren: package java.util; public interface Iterator<E> { boolean hasnext(); E next(); void remove(); } package java.util; public interface Enumeration<E> { boolean hasmoreelements(); E nextelement(); } C++ definiert Iteratoren über definierte Operatoren: (für Iterator it) o *it Zugriff auf das aktuelle Element auf das it verweist o ++it weiter zum nächsten Element o it!= v.end() Ende-Erkennung über Vergleich zweier Iteratoren Prog3: P. Sommerlad, F. Ulmer 9
10 Iteratoren C++ vs. Java Wie bekommt man nun einen Iterator? public interface Iterable<T> { Iterator<T> iterator(); } Standardcontainer definieren ::iterator Typ Factory-Methoden o begin() Anfang des Containers o end() Ende des Container (hinter dem Ende!) vector<int>::iterator it = v.begin(); while(it!= v.end()){ cout << *it << endl; ++it; } for ( vector<int>::iterator it = v.begin(); (it!= v.end()); ++it){ cout << *it << endl; } Prog3: P. Sommerlad, F. Ulmer 10
11 Idiom: Ausgeben in Schleife Um den eingelesenen vector<int> auszugeben existieren verschiedene Möglichkeiten: o klassisch: vector<int>::iterator it = v.begin(); while(it!= v.end()){ cout << *it << endl; ++it; } o modern: for ( vector<int>::iterator it = v.begin(); it!= v.end(); ++it){ cout << *it << endl; } for_each(v.begin(),v.end(), cout << _1 << "\n"); copy(v.begin(),v.end(), ostream_iterator<int>(cout,"\n")); Prog3: P. Sommerlad, F. Ulmer 11
12 vector<> Iteratoren vector<>::iterator o Typ des Iterators begin(), end() o Iteratoren zur Benutzung vector<int>, size() == 6 begin() end() Prog3: P. Sommerlad, F. Ulmer 12
13 vector<> Iteratoren vector<int> v = vector<int> iterator it; Was erhalten Sie bei folgenden Anweisungen? raten Sie ruhig und diskutieren Sie mit ihrem Nachbarn o *v.begin begin()? o it = v.begin(); ++it; ++it; *it? o it = v.begin(); it = it +3; *it? o it = v.begin(); it[3]? o it = v.begin(); *++it = 7? 7 Prog3: P. Sommerlad, F. Ulmer 13
14 C++ Iteratoren Diskussion In modernem C++ werden Iteratoren selten direkt zum Iterieren benutzt, sondern als Parameter für fertige Algorithmen, die das Iterieren vornehmen (copy, find, accumulate) Die STL Algorithmen verwenden meistens ein Paar von Iteratoren, die Anfang und Ende eines Bereichs bedeuten. o das Ende zeigt immer "hinter" den zu iterierenden Bereich Der mittels end() ermittelte Iterator kann nur zum Vergleichen verwendet werden, da er hinter das Ende eines Containers verweist. Prog3: P. Sommerlad, F. Ulmer 14
15 Reverse Iteratoren std::vector<> und std::string definieren auch Iteratoren, die "von hinten" iterieren: o rbegin() o rend() o std::vector<>::reverse_iterator -> Typ Zum durchlaufen benutzt man auch ++! for( vector<int>::reverse_iteratorreverse_iterator it = v.rbegin() rbegin(); it!= v.rend() rend(); ++it){ cout << *it << endl; } Prog3: P. Sommerlad, F. Ulmer 15
16 Spezialiteratoren für I/O ostream_iterator Die Standardbibliothek definiert spezielle Iteratoren für die Nutzung der Algorithmen für I/O-Streams (cout) std::ostream_iterator<typ> o dient zur Ausgabe von Elementen des Typs vector<int> v; // abfüllen... // zeilenweise ausgeben: copy(v.begin(),v.end(), ostream_iterator<int>(cout,"\n")); o Konstruktorparameter: ostream& -> wohin geht die Ausgabe (cout) Trenner -> optionaler Trenner als String Konstante "\n" o Templateparameter Typ muss immer angegeben werden! o Iterator-Objekt wird bei Algorithmen per Wert angegeben Prog3: P. Sommerlad, F. Ulmer 16
17 std::string und Iteratoren Auch std::string definiert Iteratoren o damit können Algorithmen, die auf Iteratoren aufbauen auch auf Strings angewendet werden string s("hello world"); sort(s.begin(),s.end()); cout << s << endl; //-> " Hdellloorw" Prog3: P. Sommerlad, F. Ulmer 17
18 Spezialiteratoren für I/O istream_iterator std::istream_iterator<typ> o dient zur Einlesen von Elementen des Typs Wie das Ende markieren? o Spezialobjekt ohne Stream als EOF-Marker o istream_iterator<typ> eof; istream_iterator<int> eof; vector<int> v(istream_iterator<int>(cin),eof); // Vector von Eingabe abfüllen... o Konstruktorparameter: istream& -> woher kommt die Eingabe ACHTUNG: "whitespace" (Leerzeichen, Zeilentrenner, Tabs) wird überlesen o >> Operator wird intern genutzt o evtl. für istream_iterator<char> problematisch Prog3: P. Sommerlad, F. Ulmer 18
19 Spezialiteratoren für I/O istreambuf_iterator std::istreambuf_iterator<typ> o dient zur Einlesen von Elementen des Typs normalerweise ist das char o Endemarker wie bei istreambuf_iterator o Konstruktorparameter: istream& -> woher kommt die Eingabe liest auch whitespace ein istreambuf_iterator<char> eof; cout << distance(istreambuf_iterator<char>(cin),eof)<< endl; // wieviele Zeichen auf der Standardeingabe? Prog3: P. Sommerlad, F. Ulmer 19
20 Erste nützliche Algorithmen copy Kopiert einen Bereich o schon gesehen, um vector auszugeben find Elemente suchen count Elemente zählen accumulate Elemente summieren Iteratoren-Funktion: distance Abstand zwischen zwei Iteratoren Prog3: P. Sommerlad, F. Ulmer 20
21 distance() Zählt die Elemente, die zwischen zwei Iteratoren liegen. distance(v.begin(),v.end()) == v.size() ist effizient Prog3: P. Sommerlad, F. Ulmer 21
22 Suchen mit find() Der Algorithmus find sucht über Iteratoren nach einem Wert. liefert einen Iterator als Ergebnis: o auf das gefundene Element, oder o das Ende des Bereichs, falls nicht gefunden istream_iterator<int> eof; vector<int> v(istream_iterator<int>(cin),eof); Bereichsende! if (find(v.begin(),v.end(),42)!= v.end()) cout << "I found the answer 42" <<endl; else cout << "no answer found" << endl; Prog3: P. Sommerlad, F. Ulmer 22
23 Suchen mit find() vector<int> mit folgender Belegung: begin() find(v.begin(),v.end(),42) end() find(v.begin(),v.end(),43) Prog3: P. Sommerlad, F. Ulmer 23
24 Zählen mit count() int count(inputiterator first, InputIterator last, value) zählt, wie oft value im Bereich [first,last) vorkommt. braucht #include <algorithm> istream_iterator<int> eof; vector<int> v(istream_iterator<int>(cin),eof); cout << "Anzahl der Nullen: " << count(v.begin(),v.end(),0) << endl; Prog3: P. Sommerlad, F. Ulmer 24
25 Summieren mit accumulate() T accumulate(inputiterator first, InputIterator last, T startvalue) summiert Werte aus Iteratoren Bereich auf. braucht #include <numeric> istream_iterator<int> eof; vector<int> v(istream_iterator<int>(cin),eof); cout << "Summe der Eingaben :" << accumulate(v.begin(),v.end(),0) << endl; Prog3: P. Sommerlad, F. Ulmer 25
26 vector<> mit boost::assign initialisieren ausser mit iteratoren ist es aufwändig einen vector zu initialisieren: using namespace std; vector<int> v; v.push_back(31); v.push_back(41); v.push_back(59); v.push_back(26); // mühsam... es sei denn, man nutzt <boost/assign.hpp> using namespace boost::assign; v += 31,41,59,26; ACHTUNG: in Eclipse für das Projekt den Include Pfad um boost ergänzen! o z.b. c:/cygwin/usr/include/boost-1_33_1/ Prog3: P. Sommerlad, F. Ulmer 26
27 Programmieren 3 C++ Standardbibliothek STL (2) Prof. Peter Sommerlad Fredy Ulmer
28 STL Überblick Container vector deque list set multiset map multimap stack queue priority_queue Arrays Type a[n] Pseudo- Container string istream (-buf) ostream (-buf) bieten Zugriff Iterator-Kategorien InputIterator OutputIterator ForwardIterator BidirectionalIterator RandomAccessIterator Pointer Type *p wirken auf I/O stream Iteratoren istream_iterator istreambuf_iterator ostream_iterator ostreambuf_iterator helfen nutzen Funktoren Prädikate unary_function binary_function ptr_fun, mem_fun, mem_fun_ref Algorithmen-Kategorien non-modifying comparison searching binary search modifying sequence uninitialized sequence sorting merging set operations heap operations permutations miscellaneous numerics Iteratorfunktionen Prog3: P. Sommerlad, F. Ulmer 28
29 std::set<t> Neben vector<> und string gibt es auch eine Standardklasse für Mengen von Elementen. Jedes Element kann nur einmal vorkommen. std::set ist automatisch sortiert. Neben den Standard-Container Methoden definiert std::set, solche, die mit Element- Werten arbeiten, statt mit Iteratoren: o s.find(element e) o s.insert(element e) kein push_back(e)! o s.erase(element e) Prog3: P. Sommerlad, F. Ulmer 29
30 Set / Multiset set erlaubt keine Duplikate, multiset schon Für den Element Typ muss der < Operator definiert sein, wegen Sortierung o für int, string, etc. automatisch der Fall o wir lernen später, wie man das für eigene Typen macht, bzw. Sortierreihenfolge ändert. Set: Multiset: Prog3: P. Sommerlad, F. Ulmer 30
31 Demo std::set<int> Einlesen einer Menge von Zahlen sortierte Ausgabe Prüfen ob eine Zahl vorhanden ist o direkt im set möglich! Prog3: P. Sommerlad, F. Ulmer 31
32 std::map<k,v> Definiert eine Nachschlagetabelle für sog. keyvalue Paare. o analog Java's java.util.map, aber sortiert. Jeder Key darf nur einmal vorkommen. o ausser bei std::multimap<k,v> Die map ist nach Keys sortiert. Es gibt einen effizizienten Suchzugriff auf Values, wenn man nach dem key sucht. Map: 1 z Multimap: 2 x 4 y 3 y 5 y 6 z 1 z 1 x 3 y 2 y 3 y 3 z Prog3: P. Sommerlad, F. Ulmer 32
33 Diskussion std::map Maps sind eine sehr wichtige Datenstruktur, auch bekannt als "assoziatives Array" oder Dictionary alle Skripting Sprachen verwenden extensiv solche Maps o Perl, Ruby, awk,... Die Möglichkeit unter einem "Namen" einen Wert zu hinterlegen ist auch in C++ sehr wertvoll Der Zugriff über [key] macht Programme i.d.r. gut lesbar Values können geändert werden, Keys nicht o nur über neu-eintragen und löschen des alten Keys Prog3: P. Sommerlad, F. Ulmer 33
34 Iterator für std::map std::pair<t1,t2> Da jedes Element einer map ein Paar aus Key und Value ist, gibt es dafür eine Standard Datenstruktur: o std::pair<key,value> map::iterator verweist nicht auf key, bzw. value der Einträge, sondern auf diese Paare o Das macht die Verwendung von map in manchen Algorithmen "unhandlicher" als set oder vector. Zugriff: o map<string,int>::iterator it=m.begin(); o Key über: (*it).first bzw. it->first o Value über: (*it).second bzw. it->second Prog3: P. Sommerlad, F. Ulmer 34
35 Demo map map<string, double> Preisliste o Preise einlesen o Liste ausgeben o Preise ergänzen und ändern Prog3: P. Sommerlad, F. Ulmer 35
36 boost::assign für maps Maps initialisieren ist auch unhandlich: using namespace std; map<string,int> m; m["frodo"]=21; m["bilbo"]=123; m["gandalf"]=502; m["harry Potter"]= -42; // mühsam... auch hier hilft boost::assign: using namespace boost::assign; insert(m)("frodo",21)("bilbo",123) ("Gandalf",502)("Harry Potter",-42); Prog3: P. Sommerlad, F. Ulmer 36
37 STL Theorie Schnupperinfo schon einmal zum nachschlagen...
38 Die Standard Template Library STL Die STL besteht im Wesentlichen aus drei Teilen: Container: Eine Menge von Objekten eines bestimmten Typs verwalten. Iteratoren: Über eine Menge von Objekten wandern (iterieren). Algorithmen: Mengen in irgendeiner Form bearbeiten. (sortieren, auffinden, löschen, modifizieren...) Prog3: P. Sommerlad, F. Ulmer 38
39 Zusammenspiel Iteratoren werden insbesondere dazu benutzt um Containerelemente anzusprechen. Algorithmen arbeiten auf Containern und verwenden dabei Iteratoren. Iteratoren als Bindeglied zwischen Containern und Algorithmen. Container vector<> set<> map<> string Iteratoren begin() end() istream_iterator ostream_iterator Algorithmen find() copy() count() accumulate() Prog3: P. Sommerlad, F. Ulmer 39
40 Iteratoren Konzepte Praktisch alle Algorithmen der STL setzen auf Iteratoren auf Iteratoren legen z.b. folgende Positionen fest: o Anfang und Ende o Einfüge und Löschposition o Position eines Suchergebnisses Ein Range (Bereich) ist ein Paar zusammengehöriger Iteratoren o z.b. [begin(), end()) bilden einen Range. o Das Ende des Range gehört nicht mehr zum Range, der Anfang sehr wohl ("halboffen") Zugriff *end() ist undefiniert! Prog3: P. Sommerlad, F. Ulmer 40
41 Iteratoren: Verhalten Folgende fundamentale Operationen sind für alle Iteratoren definiert T& iterator::operator*() operator*() bezeichnet * bei *it o Liefert das Element, an dessen Position sich der Iterator befindet. Sofern das Element Komponenten hat, kann mit dem Operator -> darauf zugegriffen werden iterator::operator++() o Setzt den Iterator ein Element weiter. immer die Prä- Inkrement Variante verwenden (++pos). iterator::operator==() iterator::operator!=() o "zeigen" die Iteratoren auf das gleiche Element? oder nicht? Prog3: P. Sommerlad, F. Ulmer 41
42 Iterator Kategorien Grund für Kategorien Container unterstützen unterschiedliche Iterator-Mächtigkeit o z.b. sequentieller bzw. wahlfreier Zugriff Algorithmen benötigen unterschiedlich "starke" Iteratoren. o Algorithmen sind i.d.r so definiert, die "schwächste" Annahme zu machen. Bei "stärkeren" Iteratortypen als Parameter werden automatisch optimierte Implementierungen der Algorithmen verwendet "Magie" durch Template Specialization Prog3: P. Sommerlad, F. Ulmer 42
43 Iterator Kategorien (1) Input-Iterator o einmaliger Durchlauf möglich/gefordert o lesender Zugriff via operator*() nur einmal möglich, danach Element "verbraucht" o Modell: istream_iterator<t> Output-Iterator o einmaliger Durchlauf möglich/gefordert o nur schreibender Zugriff via operator*() nur einmal möglich! *iter=value; o Modell: ostream_iterator<t> Prog3: P. Sommerlad, F. Ulmer 43
44 Iterator Kategorien (2) Forward-Iterator o mehrmaliger Durchlauf möglich/gefordert o Zugriff via operator*() beliebig oft nur eingeschränkt, falls const_iterator o "normale" Iteration, kompatibel zu Input- und Output- Iterator Bidirectional-Iterator o zusätzlich ist -- operator--() definiert o vorwärts und rückwärts möglich Modell: list<t>::iterator Random Access-Iterator o zusätzlich ist operator[]() definiert o Integer-Addition ist möglich (statt advance() Funktion) o Subtraktion zusammengehörender Iteratoren liefert Distanz o Modell: vector<t>::iterator Prog3: P. Sommerlad, F. Ulmer 44
45 Einfügen mit Insertion Iteratoren Insertion Iteratoren sind spezielle Output-Iteratoren, die es erlauben in Container etwas einzufügen. o *iter = value; // ist definiert und fügt value ein o ++iter; // ist definiert aber ein "no-op" back_inserter(container &) o nutzt push_back Methode des Containers um Elemente einzufügen o funktioniert für string, vector, deque, list oder einen eigenen, der push_back(const T&) definiert front_inserter(container &) o analog back_inserter, aber mit push_front Aufruf o funktioniert für deque, list oder eigene Container mit push_front(const T&) inserter(container&,iterator pos) o fügt Elemente an der Position pos ein. o nutzt Container Methode insert(iterator,const T&) des Containers Prog3: P. Sommerlad, F. Ulmer 45
46 Anwendung Insertion Iteratoren #include <iostream> #include <vector> ints in vector #include <iterator> einlesen und using namespace std; wieder ausgeben int main() { vector<int> v; typedef istream_iterator<int> input; copy(input(cin),input(),back_inserter(v)); copy(v.begin(),v.end(),ostream_iterator<int>(cout,"\n")); } #include <iostream> #include <set> ints in set einlesen und #include <iterator> sortiert ausgeben using namespace std; int main() { set<int> s; typedef istream_iterator<int> input; copy(input(cin),input(),inserter(s,s.begin())); copy(s.begin(),s.end(),ostream_iterator<int>(cout,"\n")); } Prog3: P. Sommerlad, F. Ulmer 46
47 Container Methoden mit Iteratoren Container(InputIterator first, InputIterator last) o Erzeuge Container mit Elementen aus Range [first,last) iterator begin(), iterator end() o (const_)iterator auf erstes/hinter letztes Element erase(iterator p) o Entferne Element p aus Container erase(iterator first, iterator last) o Entferne Elemente des Range [first,last) aus dem Container reverse_iterator rbegin(), reverse_iterator rend() o liefere die Reverse-Iteratoren Prog3: P. Sommerlad, F. Ulmer 47
48 Container Methoden mit Iteratoren (II) insert(iterator p,const T& value) o füge value an Position p ein insert(iterator p,size_type n, const T& value) o füge n Elemente mit Wert value an Position p ein insert(iterator p, InputIterator first, InputIterator last) o füge Elemente aus dem Range [first,last) an Position p ein Prog3: P. Sommerlad, F. Ulmer 48
49 Methoden mit Iteratoren für Assoziative C. insert(inputiterator first, InputIterator last) o füge Elemente aus Range ein, nur (multi-) set und map iterator find(const T& k) o Suche Element äquivalent zu k und liefere Iterator auf dieses oder end(), falls k nicht gefunden iterator lower_bound(const T& k) o Suche Element k und liefere Iterator auf k oder die Stelle wo k kommen müsste iterator upper_bound(const T& k) o Suche erstes Element grösser als k und liefere den Iterator dafür Prog3: P. Sommerlad, F. Ulmer 49
50 Container Methoden Bevorzuge Range-Operationen statt Schleife mit einzelnen Operationen o Konstruktor o erase() o insert() #include <iostream> #include <set> ints in set einlesen und #include <iterator> sortiert ausgeben using namespace std; int main() { typedef istream_iterator<int> input; input eof; // trick to force the following as data! set<int> s(input(cin),eof); copy(s.begin(),s.end(),ostream_iterator<int>(cout,"\n")); } Prog3: P. Sommerlad, F. Ulmer 50
51 Operationen für Container X container; X container1(container2) container.~x() container.size() container.maxsize() bool container.empty() container1 = container2 container1.swap(container2) swap(container1, container2) container1 == container2 container1 < container2 Standardkonstruktor, erzeugt leeren Container Copy-Konstruktor Destruktor, löscht alle Elemente und gibt den Speicherplatz frei Aktuelle Anzahl von Elementen Maximal mögliche Anzahl von Elementen true, falls Container leer Zuweisungsoperator, alle Elemente kopieren Vertauscht die Container, als Methode und als globale Funktion Vergleichsoperatoren, entsprechend auch!=, >, <= und >= X steht für den Datentyp des Containers, z.b. vector<int> Prog3: P. Sommerlad, F. Ulmer 51
52 Operationen für Container mit Iteratoren X container1(anf, end) container.begin() container.end() container.rbegin() container.rend() container.insert(pos,elem) container.erase(pos) container.erase(anf,end) container.clear() Erzeugt Container und initialisiert ihn mit Elementen aus Iteratorenbereich Liefert Iterator auf das erste Element Liefert Iterator für die Position hinter(!) dem letzten Element Liefert Reverse-Iterator auf das letzte Element Liefert Reverse-Iterator für die Position vor(!) dem ersten Element Fügt eine Kopie von elem an Iteratorposition pos ein Löscht Element an Iteratorposition Löscht alle Elemente des Bereichs Löscht alle Elemente des Containers Prog3: P. Sommerlad, F. Ulmer 52
53 Container Datentypen Container::value_type Container::size_type Container::reference Container::const_reference Container::iterator Container::const_iterator Datentyp eines Container Elementes Ganzahliger, vorzeichenloser Wert für Grössenangaben Referenztyp auf Container-Element dito, nur lesend verwendbar Iteratortyp dito, nur lesend verwendbar Container steht für den Datentyp des Containers, zbsp. vector<int> Prog3: P. Sommerlad, F. Ulmer 53
Hier wird die Verwendung der Standard Template Library (kurz STL) kurz beschrieben. Inhalt 1.Verwendung der STL Grundlagen...
STL Die C++ Bibliothek ist eine Sammlung von standardisierten Klassen und Containern. Zu beachten ist, dass nicht jede C++ Implementierung den ganzen Umfang der Standardbibliothek realisiert hat. Hier
MehrEinführung in die STL anhand eines ausgewählten Beispiels
Einführung in die STL anhand eines ausgewählten Beispiels Frank M. Thiesing http://home.t-online.de/home/ frank.thiesing/stl/stl-folien.pdf Inhalt Überblick über die C++ STL Container Iteratoren Algorithmen
MehrEinführung in die STL
Einführung in die STL Fimberger Lucia lfimberg@cosy.sbg.ac.at Nidetzky Marion mnidetzk@cosy.sbg.ac.at Was ist die STL? Abkürzung für Standard Template Library Eine generische Bibliothek Ist kaum objektorientiert,
MehrAssoziative Container in C++ Christian Poulter
Assoziative Container in C++ Christian Poulter Seminar: Die Sprache C++ Mat-Nr.: 53 03 129 EMail: inf@poulter.de Christian Poulter Assoziative Container in C++ Seite 1/10 Inhalt 1. Einleitung: Container...
MehrEinführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil IV - Weiterführende Themen 13. Klassenbibliotheken Klassenbibliotheken Seite 2 Sammlung von Algorithmen und Klassen in Klassenbibliotheken: Konzept:
MehrC-Arrays vs. C++-Container
C-Arrays vs. C++-Container In C verwendet man (mangels Alternativen) sehr häufig das C-Array (= Feld): im Speicher hintereinander abgelegte Elemente vom gleichen Typ. Arrays haben einen Basistyp (Typ des
MehrProgrammierkurs C++ Templates & STL (1/2)
Programmierkurs C++ Templates & STL (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Templates Die wichtigsten objekt-orientierten
MehrC++ STL. Iteratoren. Ralf Schuchardt
C++ STL Iteratoren Ralf Schuchardt 1 Übersicht Konzete const_iterator reverse_iterator Iterator-Traits Iterator-Adater istreambuf_itererator 2 Iterator::Konzete Trivial-Iterator *it, it->, it1 == it2 Inut-Iterator
MehrSTL - std::multiset. Markus Scheidgen. 31. Mai 2002
STL - std::multiset Markus Scheidgen 31. Mai 2002 STL - std::multiset 1 Überblick das Interface zu multiset Konzepte, Modelle - Darstellung von Eigenschaften Überblick Besonderheiten von multiset Möglichkeiten
MehrC++ - Einführung in die Programmiersprache Standard Templates. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Standard Templates Leibniz Universität IT Services Anja Aue C++ - Standardbibliothek Standardisierte Sammlung von häufig vorkommenden Funktionen und Klassen.
MehrEinführung in die STL
1/29 in die STL Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/29 Outline 1 3/29 Inhaltsverzeichnis 1 4/29 Typisierung
MehrC-Arrays vs. C++-Container
C-Arrays vs. C++-Container In C verwendet man (mangels Alternativen) sehr häufig das C-Array (= Feld): im Speicher hintereinander abgelegte Elemente vom gleichen Typ. Arrays haben einen Basistyp (Typ des
Mehr5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren
Programmieren in C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung
MehrProgrammieren in C++ Überblick
Programmieren in C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung
MehrC++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16
C++ Teil 7 Sven Groß 3. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni 2016 1 / 16 Themen der letzten Vorlesung dynamische Speicherverwaltung (Wdh.) Cast bei Zeigern STL-Vektoren + Live Programming
MehrDie C++ Standard Template Library Andreas Obrist
Die C++ Standard Template Library 24. 06. 2004 Andreas Obrist Was dürft Ihr erwarten? 1. Teil Das Wichtigste in Kürze über die Standard Template Library 2. Teil Praktische Beispiele Was dürft Ihr nicht
MehrProgrammieren 2 C++ Überblick
Programmieren 2 C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 6. Templates und generische Programmierung
MehrPolymorphismus 44. Function.hpp. #include <string>
Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class
MehrC++ Teil 8. Sven Groß. 5. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez / 16
C++ Teil 8 Sven Groß IGPM, RWTH Aachen 5. Dez 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez 2014 1 / 16 Themen der letzten Vorlesung Casts bei Zeigern dynamische Speicherverwaltung Vektoren Typedefs
MehrEinführung in die Nutzung der C++ - Standard - Bibliothek
Einführung in die Nutzung der C++ - Standard - Bibliothek Literatur: (Amme) - Ammeraal, L.: STL for C++-Programmers; Chichester: Wiley, 1997 (Brey) - Breymann, U.: Die C++ Standard Template Library; München:
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
MehrPolymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
MehrWo und wie lange leben Objekte? globale Objekte lokale Objekte dynamische Objekte
Wo und wie lange leben Objekte? globale Objekte lokale Objekte dynamische Objekte entstehen durch... globale Objektvereinbarung: T o; blocklokale Objektvereinbarung: {.. T o;.. durch expliziten Aufruf
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrJAVA KURS COLLECTION
JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatorüberladung 2 Pointer Zeigervariable 3 CopyConstructor 4 Listen 5 Array String 6 STL Container
Mehr19. Dynamische Datenstrukturen II
Anderes Speicherlayout: Verkettete Liste 19. Dynamische Datenstrukturen II Kein zusammenhängender Speicherbereich und kein wahlfreier Zugriff Jedes Element zeigt auf seinen Nachfolger Einfügen und Löschen
Mehr19. Dynamische Datenstrukturen II
Anderes Speicherlayout: Verkettete Liste 19. Dynamische Datenstrukturen II Verkettete Listen, Vektoren als verkettete Listen Kein zusammenhängender Speicherbereich und kein wahlfreier Zugriff Jedes Element
MehrComputergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2
Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2 Neben vector ist list die zweite wichtige Containerklasse. Um unsere Kenntnisse von Containerklassen zu erweitern,
MehrSortierte Assoziative Container der STL
Sortierte Assoziative Container der STL Speichern die Daten intern in einer Baumstruktur Elementzugriff O(log 2 N) Das mathematische Konzept einer Relation oder eine diskrete Abbildung wird mit map realisiert,
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1
Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1
Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch
MehrMapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.
Mapra: C++ Teil 4 Felix Gruber IGPM, RWTH Aachen 6. Mai 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mai 2015 1 / 22 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
MehrEinführung in die Programmierung Wintersemester 2018/19
Einführung in die Programmierung Wintersemester 2018/19 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : STL Inhalt Überblick über die Standard Template
MehrC++ Kurs Teil 3. Standard Template Library (STL) Kommunikation mit der shell Hyper Text Markup Language (HTML)
C++ Kurs Teil 3 Standard Template Library (STL) Übersicht vector algorithm: sort, for_each map Kommunikation mit der shell Hyper Text Markup Language (HTML) O. Ronneberger: C++ Kurs Teil 3 Seite 1
MehrC++ Standardbibliothek
C++ Standardbibliothek Zu jedem Compiler gibt es eine Bibliothek mit nützlichen Klassen und Routinen. Die C++ Standardbibliothek (standard library) stellt ein erweiterbares Rahmenwerk mit folgenden Komponenten
MehrProgrammierkurs. Steffen Müthing. November 16, Interdisciplinary Center for Scientific Computing, Heidelberg University
Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University November 16, 2018 Standardbibliothek Datenstrukturen Algorithmen Variablen und Referenzen Aufrufkonventionen
Mehr19. Dynamische Datenstrukturen II. Verkettete Listen, Vektoren als verkettete Listen
636 19. Dynamische Datenstrukturen II Verkettete Listen, Vektoren als verkettete Listen Anderes Speicherlayout: Verkettete Liste 638 Kein zusammenhängender Speicherbereich und kein wahlfreier Zugriff 638
MehrStandard Template Library
Standard Template Library Ralph Thesen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Seminar: Technische Numerik Dezember 2009 Überblick 1 Einleitung 2 Templates 3 STL
Mehr13 Reguläre Ausdrücke
13 Reguläre Ausdrücke 13.1 Übungsaufgabe 13.1.1 Aufgabe 1 Schreiben Sie ein C++ Programm, das eine txt-datei (UTF8 kodiert) öffnet und mit wcin alle Wörter einliest, Punktuationszeichen am Anfang und Ende
MehrEinführung in die STL 226
Einführung in die STL 226 Die Standard-Template-Library (STL) bietet eine Reihe von Template-Klassen für Container, eine allgemeine Schnittstelle für Iteratoren und eine Sammlung von Algorithmen an. Container-Klassen
MehrAngewandte Kryptografie Praktikum 1
Angewandte Kryptografie Praktikum 1 Thema: Affine Chiffre Wintersemester 2016/2017 Prof. Dr. Christoph Karg Hochschule Aalen Ziel dieses Praktikums ist die Implementierung der affinen Chiffre und einem
MehrWer C sagt, muss auch PlusPlus sagen! Teil 2 Standard Template Library, STL. Ergänzungsmanuskript für Fortgeschrittenen-Kurs C++ Programmierung
Wer C sagt, muss auch PlusPlus sagen! Teil 2 Standard Template Library, STL Ergänzungsmanuskript für Fortgeschrittenen-Kurs C++ Programmierung 2 8 DIE STL 3 8.1 Aufbau der STL 3 8.1.1 Container (container)
MehrProgrammieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11
MehrGrundlagen der Informatik
Grundlagen der Informatik Klausur 1. August 2008 1. Dynamische Datenstrukturen und objektorientierte Programmierung (45 Punkte) Gegeben sei eine Datenstruktur mit folgendem Aufbau struct lelem { int w;
MehrDynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren
Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit
MehrNumerische Methoden und Algorithmen in der Physik
Numerische Methoden und Algorithmen in der Physik Hartmut Stadie, Christian Autermann 06.11.2008 Numerische Methoden und Algorithmen in der Physik Christian Autermann 1/ 40 Einführung Datenfelder Sortieralgorithmen
MehrMapra: C++ Teil 4. Felix Gruber, Michael Rom. 24. Mai 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24.
Mapra: C++ Teil 4 Felix Gruber, Michael Rom IGPM 24. Mai 2016 Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24. Mai 2016 1 / 25 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien
MehrC++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18
C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen
MehrProblem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe
Maximale Größe?! Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um Dynamische Anpassung der Größe Praktische Informatik I, HWS 2009, Kapitel 10 Seite
MehrSTL-Container und Laufzeit
STL-Container und Laufzeit Eine Übersicht Höhere Programmierung / C++ Yannick Kaiser, LMU 1 C++11 Array konstanter Länge, die bei der Initalisierung angegeben werden muss STL-Kapselung für klassische
Mehr19. STL Container Programmieren / Algorithmen und Datenstrukturen 2
19. STL Container Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013 1 Agenda Kontrollfragen STL Container: Übersicht
MehrC++ Standard Template Library Ausgewählte Kapitel aus Softwaretechnologie
C++ Standard Template Library Ausgewählte Kapitel aus Softwaretechnologie Robert Fritz roggi@sbox.tugraz.at C++ Standard Template Library (STL) p.1/41 Inhalt Einführung Generisches Programmieren Aufbau
MehrProgrammier-Befehle - Woche 08
Datentypen Vektoren (mehrdim.) eines bestimmten Typs Erfordert: #include Wichtige Befehle: Definition: std::vector my vec (n rows, std::vector(n cols, init value)) Zugriff:
MehrC++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14
C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung
MehrC++ Teil 7. Sven Groß. 26. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 18
C++ Teil 7 Sven Groß IGPM, RWTH Aachen 26. Nov 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 26. Nov 2014 1 / 18 Themen der letzten Vorlesung Referenzen Zeiger Felder dynamische Speicherverwaltung Sven
MehrProgrammier-Befehle - Woche 09
Zeiger und Iteratoren Zeiger (generell) Adresse eines Objekts im Speicher Wichtige Befehle: Definition: int* ptr = address of type int; (ohne Startwert: int* ptr = 0;) Zugriff auf Zeiger: ptr = otr ptr
MehrVektoren ( #include <vector> )
Vektoren ( #include ) dynamische Arrays eines beliebigen Typs mit wahlfreiem Zugriff Abstraktion von C-Feldern, unsortiert alle Algorithmen sind anwendbar (RandomAccessIterator) sehr gutes Zeitverhalten
MehrVisuelle Kryptographie. Anwendung von Zufallszahlen
Visuelle Kryptographie Anwendung von Zufallszahlen Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken, so dass Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken,
MehrFelder (Arrays) und Zeiger (Pointers) - Teil I
Felder (Arrays) und Zeiger (Pointers) - Teil I Felder: Motivation Wir können jetzt über Zahlen iterieren: for (int i=0; i
MehrC++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11
C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen
MehrProgrammieren in Java
Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics
MehrInformatik - Übungsstunde
Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 08-25.04.2018 Lernziele const: Reference const: Pointer vector: iterator using Jonas Lauener (ETH Zürich) Informatik
Mehr15. Die Klasse string
15. Die Klasse string Notwendige Funktionen Erzeugen Zuweisen, Anhängen,Einfügen Löschen, Entfernen, Ersetzen Ermitteln der Größe indizierter Zugriff auf Zeichen Vergleich Suchen von Zeichen und Teil-Strings
MehrProgrammierkurs Java
Programmierkurs Java Java Generics und Java API (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer Datenstrukturen In vielen Sprachen
MehrVerschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes
Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine
MehrWir erinnern uns... #include <iostream> #include <vector>
163 6. C++ vertieft (I) Kurzwiederholung: Vektoren, Zeiger und Iteratoren Bereichsbasiertes for, Schlüsselwort auto, eine Klasse für Vektoren, Subskript-Operator, Move-Konstruktion, Iterator. Wir erinnern
MehrObjektorientierte Programmierung II
Objektorientierte Programmierung II OOP I Erlaubt Entwicklers, im Problemraum zu denken und zu arbeiten. Das Problem wird in eine Menge von Objekten zerlegt. Objekte wirken aufeinander, um das Problem
MehrVorlesungsprüfung Programmiersprache 1
Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,
MehrEinstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung
MehrInformatik I (D-ITET)
Informatik I (D-ITET) Übungsstunde 2, 5.10.2009 ETH Zürich? Übungsgruppenwechsel? Abgabe der Übungen... Bis Mo, 24:00 Theorie: Programme: per mail oder auf Papier.cpp Datei per mail Bin euch noch Demos
MehrZeiger und dynamischer Speicher
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr
MehrAbschnitt 10: Datenstrukturen
Abschnitt 10: Datenstrukturen 10. Datenstrukturen 10.1Einleitung 10.2 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 829 / 867 Einleitung Überblick 10. Datenstrukturen 10.1Einleitung
MehrC++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13
C++ Teil 7 Sven Groß 30. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 30. Nov 2015 1 / 13 Themen der letzten Vorlesung Zeiger, Felder (Wdh.) dynamische Speicherverwaltung Sven Groß (IGPM, RWTH Aachen)
MehrObjektorientiertes Programmieren mit C++ für Fortgeschrittene
FG TECHNISCHE INFORMATIK I CQ B00 00 TH 02 Objektorientiertes Programmieren mit C++ für Fortgeschrittene Kapitel 11 11. Standard-Template-Library (STL) 11.1. Überblick 11.2. Container 11.3. Iteratoren
MehrGenerative Programmierung
Generative Programmierung Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken 2005-01-12 Grundidee: Parametrisierung Die Abstraktion ist ein Grundprinzip der Softwaretechnik.
MehrDatenstrukturen und Algorithmen. Vorlesung 5
Datenstrukturen und Algorithmen Vorlesung 5 Inhaltsverzeichnis Vorige Woche: Sortierte Listen Zyrkuläre Listen Verkettete Listen auf Arrays Heute betrachten wir: Skip Listen ADT Set ADT Map Iterator ADT
MehrGrundlagen der Informatik 6. Arrays I
6. Arrays I Motivation Array (konstante Länge) Speicherbereich Eingabe von Arrays Grundlagen der Informatik (Alex Rempel) 1 Motivation Beispiel: Bildschirmpixel zeichnen Auflösung 800x600, d.h. insgesamt
MehrC# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue
C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections Leibniz Universität IT Services Anja Aue Arrays... speichern mehrere Werte vom gleichen Datentyp. fassen zusammenhängende Werte
MehrTemplate-Klasse Eigenschaften Voraussetzungen Anwendungsgebiete std::vector<t> Reine Sequenz von Ts; Standard* Sortieren Dynamische Größenveränderung
STL Container-Klassen Template-Klasse Eigenschaften Voraussetzungen Anwendungsgebiete std::vector Reine Sequenz von Ts; Sortieren Dynamische Größenveränderung Binäre Suche kein Verwaltungsoverhead Heaps
MehrInstitut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
MehrWir erinnern uns... #include <iostream> #include <vector>
165 6. C++ vertieft (I) Kurzwiederholung: Vektoren, Zeiger und Iteratoren Bereichsbasiertes for, Schlüsselwort auto, eine Klasse für Vektoren, Subskript-Operator, Move-Konstruktion, Iterator. Wir erinnern
Mehr1. Zeiger, Algorithmen, Iteratoren und Container. Felder als Funktionsargumente, Zeiger, Iteratoren auf Vektoren, Container
1 1. Zeiger, Algorithmen, Iteratoren und Container Felder als Funktionsargumente, Zeiger, Iteratoren auf Vektoren, Container Arrays und Funktionen - Ein Wunder? 2 // Program: fill.cpp // define and use
MehrFelder (Arrays) und Zeiger (Pointers) - Teil I
Felder (Arrays) und Zeiger (Pointers) - Teil I Feldtypen, Sieb des Eratosthenes, Iteration, Zeigertypen, Zeigerarithmetik, dynamische Speicherverwaltung Felder: Motivation Wir können jetzt über Zahlen
MehrFelder (Arrays) und Zeiger (Pointers) - Teil I
Felder (Arrays) und Zeiger (Pointers) - Teil I Feldtypen, Sieb des Eratosthenes, Iteration, Zeigertypen, Zeigerarithmetik, dynamische Speicherverwaltung Felder: Motivation n Wir können jetzt über Zahlen
MehrVorkurs Informatik WiSe 16/17
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016
Mehr8. Referenzen und Zeiger
8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrSoftware Praktikum: C++ und LEDA / STL Sommersemester 2003
Software Praktikum: C++ und LEDA / STL Sommersemester 2003 Oliver Zlotowski FB IV Informatik Universität Trier 20. Mai 2003 Hallo, Welt! #include int main() { std::cout
Mehr19 Collections Framework
Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Vorteile: Einheitlicher Zugriff auf Containerobjekte. Abstraktion von den Implementierungsdetails.
MehrVerbund/Struktur (record/struct)
Arrays. Iteratoren. Verbund/Struktur (record/struct) Ein Verbund oder Struktur ist eine statische Datenstruktur Ein Verbund ist eine Menge von Elementen (meistens von unterschiedlichen Typen), die eine
MehrALP II Dynamische Datenmengen
ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung
MehrDie Klasse string Verfasser: Christian Bartl
Die Klasse string Verfasser: Index 1. Allgemein... 3 2. Eingabe von Strings... 3 3. Ausgabe von Strings... 4 4. Länge eines Strings... 4 5. Durchlaufen aller Zeichen eines Strings... 4 6. Kopieren von
Mehrint main(){ int main(){ Das wollen wir doch genau verstehen! std::vector<int> v(10,0); // Vector of length 10
Wir erinnern uns #include #include 6. C++ vertieft (I) Kurzwiederholung: Vektoren, Zeiger und Iteratoren Bereichsbasiertes for, Schlüsselwort auto, eine Klasse für Vektoren, Subskript-Operator,
MehrWir erinnern uns... #include <iostream> #include <vector>
163 6. C++ vertieft (I) Kurzwiederholung: Vektoren, Zeiger und Iteratoren Bereichsbasiertes for, Schlüsselwort auto, eine Klasse für Vektoren, Subskript-Operator, Move-Konstruktion, Iterator. Wir erinnern
Mehr