Einführung in die STL anhand eines ausgewählten Beispiels

Größe: px
Ab Seite anzeigen:

Download "Einführung in die STL anhand eines ausgewählten Beispiels"

Transkript

1 Einführung in die STL anhand eines ausgewählten Beispiels Frank M. Thiesing frank.thiesing/stl/stl-folien.pdf

2 Inhalt Überblick über die C++ STL Container Iteratoren Algorithmen Erweiterungen der STL Tipps und Tricks Weiterführende Literatur

3 Überblick STL C++ Standard-Template-Library Herzstück der C++ Standardbibliothek Daten-Behälter (Container) für effiziente Mengenverarbeitung Templates: Schablonen für generische Datenstrukturen und Algorithmen Standardisierte, deshalb einheitliche Schnittstelle

4 Bestandteile der STL Algorithmen for_each(), find(), transform(), sort(),... Iteratoren Container

5 Sequentielle Container Vector: Deque: List:

6 Assoziative Container Set/Multiset: Intern: Balancierter Binärbaum Map/Multimap:

7 Bsp.: Vector #include <iostream> #include <vector> using namespace std; int main() { vector<int> menge; // Vector-Container fuer int for (int i=1; i<=6; i++) { menge.push_back(i); for (int i=0; i<menge.size(); i++) { cout << menge[i] << ' '; cout << endl; Ausgabe:

8 Bsp.: Deque #include <iostream> #include <deque> using namespace std; int main() { deque<float> menge; // Deque-Container fuer float for (int i=1; i<=3; i++) { menge.push_front(i*1.1); menge.push_back(i*1.1); for (int i=0; i<menge.size(); i++) { cout << menge[i] << ' '; cout << endl; Ausgabe:

9 Bsp.: List #include <iostream> #include <list> using namespace std; int main() a b c... y z { list<char> menge; // List-Container fuer char for (char c='a'; c<='z'; c++) { menge.push_back(c); while (! menge.empty()) { cout << menge.front() << ' '; menge.pop_front(); cout << endl; Ausgabe: a b c... y z

10 Iteratoren Wie Zeiger in C/C++: Iterator::operator*() Iterator::operator++() Iterator::operator==() begin() pos ++ end()

11 Bsp.: List mit Iteratoren #include <iostream> #include <list> #include <iterator> using namespace std; begin() pos ++ end() int main() { list<char> menge; a b c... y z for (char c='a'; c<='z'; c++) { menge.push_back(c); list<char>::iterator pos; for (pos = menge.begin(); pos!= menge.end(); ++pos) { cout << *pos << ' '; cout << endl; Ausgabe: a b c... y z

12 Bsp.: Set #include <set> using namespace std; int main() pos ++ { typedef set<int> IntSet; IntSet menge; menge.insert (3); menge.insert (1); 4 menge.insert (5); menge.insert (4); 2 6 menge.insert (6); menge.insert (2); IntSet::iterator pos; for (pos = menge.begin(); pos!= menge.end(); ++pos) { cout << *pos << ' '; cout << endl; Ausgabe:

13 Map (= assoziatives Array) #include <map> #include <string> using namespace std; int main() { typedef map<string,float> StringFloatMap; StringFloatMap aktien; Aktie: BASF Kurs: Aktie: BMW Kurs: 67.5 Aktie: VW Kurs: 98.5 aktien["basf"] = 123.5; aktien.insert(pair<const string,float>("vw",98.5)); aktien.insert(stringfloatmap::value_type ("BWM",67.5)); StringFloatMap::iterator pos; for (pos = aktien.begin(); pos!= aktien.end(); ++pos) { cout << "Aktie: " << pos->first << '\t' << "Kurs: " << pos->second << endl;

14 Kategorisierung von Iteratoren Bidirectional-Iteratoren operator++ und operator-- Vergleich mit ==,!= Random-Access-Iteratoren Wahlfreier Zugriff Vergleich auch mit <, > Insert-Iteratoren Output- und Stream-Iteratoren

15 begin() end() Algorithmen #include <algorithm> void print (int elem) { cout << elem << ' ';... vector<int> menge; vector<int>::iterator pos, pos5;... pos = min_element (menge.begin(), menge.end()); pos5 = find (menge.begin(), menge.end(), 5); reverse (pos5, menge.end()); sort (menge.begin()+1, menge.end()-1); for_each (menge.begin(), menge.end(), print);

16 Einfügen und Löschen #include <vector> #include <algorithm>... vector<int> menge; vector<int>::iterator pos1, ende; begin() pos end() pos1 = find (menge.begin(), menge.end(), 1); inserter (menge, pos1) = 7; ende = remove (menge.begin(), menge.end(), 4); menge.erase (ende, menge.end()); ende

17 Container-Elemente Anforderungen Copy-Konstruktor Zuweisungsoperator Destruktor Weitere Anforderungen Default-Konstruktor Vergleichsoperator == Operator < für automatische Sortierung

18 Erweiterungen der STL STL ist offen für eigene Erweiterungen Schon da: Container-Adapter für Queue (=Schlange, FIFO) (deque oder list) Priority-Queue (vector oder deque als Heap) Stack (=Keller, LIFO) (vector, deque oder list) Beispiel: Stack über List: #include <stack>... stack<string,list<string>> keller; keller.push("hallo"); cout << keller.top(); keller.pop(); Hallo xyz abc

19 Tipps und Tricks Keine Zeiger als Container-Elemente! Container arbeiten mit Kopien der Werte Positiv: keine Probleme mit Verweisen Negativ: Kopieren dauert seine Zeit Negativ: Elemente nur in einem Container Fehlerbehandlung in der STL Keine Überprüfungen zur Laufzeit Am besten, man macht keine Fehler! Wann benutzt man welchen Container?

20 Zum Nachlesen frank.thiesing/stl/stl.html Nicolai Josuttis: Die C++ Standardbibliothek Addison-Wesley, 1996 Ulrich Breymann: Komponenten entwerfen mit der C++ STL 2. Auflage, Addison-Wesley, 1999

Hier wird die Verwendung der Standard Template Library (kurz STL) kurz beschrieben. Inhalt 1.Verwendung der STL Grundlagen...

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

Mehr

Einführung in die C++ STL anhand eines ausgewählten Beispiels

Einführung in die C++ STL anhand eines ausgewählten Beispiels Einführung in die C++ STL anhand eines ausgewählten Beispiels Frank M. Thiesing 15.10.2001 http://home.t-online.de/home/frank.thiesing/stl/stl.html Foliensatz: http://home.t-online.de/home/frank.thiesing/stl/stl-folien.pdf

Mehr

Die C++ Standard Template Library Andreas Obrist

Die 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

Mehr

Programmierkurs C++ Templates & STL (1/2)

Programmierkurs 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

Mehr

Einführung in die STL

Einfü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,

Mehr

Einführung in die Nutzung der C++ - Standard - Bibliothek

Einfü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:

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

C++ - 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++ - 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.

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16 Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier

Mehr

Einführung in die STL

Einfü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

Mehr

C++-Crashkurs. Jan Rosendahl, Jan-Thorsten Peter, Andreas Guta

C++-Crashkurs. Jan Rosendahl, Jan-Thorsten Peter, Andreas Guta C++-Crashkurs Jan Rosendahl, Jan-Thorsten Peter, Andreas Guta {rosendahl,peter,guta@i6.informatik.rwth-aachen.de Softwareprojektpraktikum Maschinelle Übersetzung SS 2017 Human Language Technology and Pattern

Mehr

Mapra: 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. 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

Mehr

Java Einführung Collections

Java 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]...

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

C++ Standardbibliothek

C++ 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

Mehr

4. Strukturen und Algorithmen

4. Strukturen und Algorithmen 4. Strukturen und Algorithmen Datenstrukturen sind organisierte Sammlungen von Daten identischen Typs. Organisiert wird die Anordnung der Daten und der Zugriff darauf, sowie Möglichkeiten zur Manipulation.

Mehr

Einführung in die Programmierung mit C++

Einfü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:

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2014, 16. Juli 2014 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:

Mehr

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16

C++ 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

Mehr

C++ 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ß. 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

Mehr

Mapra: 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. 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

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Wer 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 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)

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

C++ Kurs Teil 3. Standard Template Library (STL) Kommunikation mit der shell Hyper Text Markup Language (HTML)

C++ 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

Mehr

Einführung in die Programmierung (EPR)

Einführung in die Programmierung (EPR) Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.

Mehr

5.6 Spezielle Liste: Stack

5.6 Spezielle Liste: Stack 5.6 Spezielle Liste: Stack Ein Stack (auch Keller, Stapel, Kellerstapel) ist eine sequenzielle Struktur von Objekten gleichen Typs, bei der die Operationen Einfügen und Löschen nur an einem Ende möglich

Mehr

Container usw. C++ Übung am 23. Juni 2016

Container usw. C++ Übung am 23. Juni 2016 Container usw. C++ Übung am 23. Juni 2016 Pairs std::pair std::pair emptypair; std::pair mypair("text",3.14f); std::pair copypair(mypair); std::pair

Mehr

Polymorphismus 44. Function.hpp. #include <string>

Polymorphismus 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

Mehr

Programmieren in C++ Überblick

Programmieren 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

Mehr

5. Behälter und Iteratoren. Programmieren in C++ Überblick. 5.1 Einleitung. Programmieren in C++ Überblick: 5. Behälter und Iteratoren

5. 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

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

Mehr

Programmieren 2 C++ Überblick

Programmieren 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

Mehr

... Vorwort Einstieg in die Programmierung Ablaufsteuerung... 71

... Vorwort Einstieg in die Programmierung Ablaufsteuerung... 71 ... Vorwort... 13 1... Einstieg in die Programmierung... 15 1.1... Programmieren... 15 1.1.1... Start eines Programms... 15 1.1.2... Eintippen, übersetzen, ausführen... 16 1.1.3... Der Algorithmus... 18

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

Mehr

Wo und wie lange leben Objekte? globale Objekte lokale Objekte dynamische Objekte

Wo 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

Mehr

Programmieren in C/C++ und MATLAB

Programmieren 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

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

Mehr

Objektorientierte Programmierung mit C++ Vector und List

Objektorientierte Programmierung mit C++ Vector und List Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu

Mehr

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

C++ 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

Mehr

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 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

Mehr

Angewandte Kryptografie Praktikum 1

Angewandte 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

Mehr

Arnold Willemer. Einstieg in C++ Galileo Press

Arnold Willemer. Einstieg in C++ Galileo Press Arnold Willemer Einstieg in C++ Galileo Press Vorwort 13 1.1 Programmieren 15 1.1.1 Start eines Programms 15 1.1.2 Eintippen, übersetzen, ausführen 16 1.1.3 Der Algorithmus 18 1.1.4 Die Sprache C++ 19

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte 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

Mehr

Inhaltsverzeichnis. Danksagungen... 11

Inhaltsverzeichnis. Danksagungen... 11 Danksagungen............................................ 11 Einführung............................................... 13 Über dieses Buch.......................................... 15 Voraussetzungen...................................

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl

Mehr

C++ Prof. Peter Sommerlad Fredy Ulmer

C++ Prof. Peter Sommerlad Fredy Ulmer Programmieren 3 C++ Standardbibliothek Einführung Prof. Peter Sommerlad Fredy Ulmer Was Sie diese Woche erwartet: Eine weitere Warnung! std::vector Iteratoren Algorithmen std::set std::map Sie kennen

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 10. Juli 2007 Fortgeschrittene Template-Techniken C++ bietet eine Vielfalt weiterer Techniken für Templates: Templates

Mehr

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

Vektoren ( #include <vector> )

Vektoren ( #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

Mehr

19. STL Container Programmieren / Algorithmen und Datenstrukturen 2

19. 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

Mehr

Standard Template Library

Standard 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

Mehr

Repetitorium Programmieren I + II

Repetitorium 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

Mehr

Übung 13: Priority Queues (Vorrangwarteschlangen 1 )

Übung 13: Priority Queues (Vorrangwarteschlangen 1 ) Übung 13: Priority Queues (Vorrangwarteschlangen 1 ) Definition Eine Priority Queue ist eine Datenstruktur zur Speicherung einer Menge von Elementen, für die eine Halbordnung (Prioritätssteuerung) definiert

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 1 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich kurze Stunden mit Stoffueberblick -> mehr Zeit fuer Fragen This semester s menu... Imperative Programmierung

Mehr

Programmieren und Algorithmen und Datenstrukturen 2

Programmieren und Algorithmen und Datenstrukturen 2 Programmieren und Algorithmen und Datenstrukturen 2 -Überblick und Organisation Reiner Nitsch reiner.nitsch@h-da.de Vorlesung - Organisation Termine Mi3 Fr2 Bedarfsweise (Synchronisierung mit Praktikum,

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ 1 Seite 1 Einführung in die Programmierung mit C++ Teil IV - Weiterführende Themen 14. Modularisierung und Automatisierung Was heißt Modularisierung? Seite 2 bisher Programm komplett in einer Datei längere

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

Assoziative Container in C++ Christian Poulter

Assoziative 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...

Mehr

Einführung in die Programmierung Wintersemester 2018/19

Einfü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

Mehr

Mapra: C++ Teil 5. Felix Gruber, Sven Groß. 16. Mai IGPM, RWTH Aachen. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 5 16.

Mapra: C++ Teil 5. Felix Gruber, Sven Groß. 16. Mai IGPM, RWTH Aachen. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 5 16. Mapra: C++ Teil 5 Felix Gruber, Sven Groß IGPM, RWTH Aachen 16. Mai 2017 Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 5 16. Mai 2017 1 / 17 Was bisher geschah Makefiles Funktionen-Templates Ein-/Ausgabe

Mehr

C++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13

C++ 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)

Mehr

Roberto lerusalimschy. Programmieren mit Lua

Roberto lerusalimschy. Programmieren mit Lua Roberto lerusalimschy Programmieren mit Lua \ Vorwort 13 1 Die Sprache 21 1 Einführung/ 23 1.1 Chunks 24 1.2 Einige lexikalische Konventionen 26 1.3 Globale Variablen 27 1.4 DerStand-alone-Interpreter

Mehr

Felder. November 5, 2014

Felder. November 5, 2014 Felder Universität Bielefeld AG Praktische Informatik November 5, 2014 Felder: Datenstrukturen mit konstantem Zugriff Felder nennt man auch, Vektoren, Matrizen,... Konstanter Zugriff heisst: Zugriff auf

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ II

Einführung in den Einsatz von Objekt-Orientierung mit C++ II Einführung in den Einsatz von Objekt-Orientierung mit C++ II ADV-Seminar Leiter: Mag. Michael Hahsler Objektorientierung in C++ Klassen Vererbung Operatoren überladen Pointer Dynamische Speicherverwaltung

Mehr

C-Arrays vs. C++-Container

C-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

Mehr

Breiten- und Tiefensuche in Graphen

Breiten- und Tiefensuche in Graphen Breiten- und Tiefensuche in Graphen Inhalt Theorie. Graphen. Die Breitensuche in der Theorie am Beispiel eines ungerichteten Graphen. Die Tiefensuche in der Theorie am Beispiel eines gerichteten Graphen

Mehr

2. Semester, 2. Prüfung, Lösung

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

1. Übung zu "Numerik partieller Differentialgleichungen"

1. Übung zu Numerik partieller Differentialgleichungen 1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:

Mehr

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

Computergrundkenntnisse 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,

Mehr

Struktur am Beispiel einer Liste

Struktur am Beispiel einer Liste Struktur am Beispiel einer 1 Einfügen(neues element ) Aktiv Wartend knoten knoten 2 Einfügen(neues element ) Aktiv Wartend knoten knoten 3 Einfügen(neues element ) Aktiv Wartend knoten knoten 4 Aha, ich

Mehr

STL - std::multiset. Markus Scheidgen. 31. Mai 2002

STL - 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

Mehr

Programmierkurs. SoSe 2013. Markus Geveler Inst. f. Applied Mathematics, TU Dortmund. markus.geveler@math.tu-dortmund.de

Programmierkurs. SoSe 2013. Markus Geveler Inst. f. Applied Mathematics, TU Dortmund. markus.geveler@math.tu-dortmund.de Programmierkurs SoSe 2013 Markus Geveler Inst. f. Applied Mathematics, TU Dortmund markus.geveler@math.tu-dortmund.de Lesson 8 Was machen wir heute hier? mehr zu pointern und Speicher mehr zu pointern

Mehr

Übung HP Angabe: #include <iostream> #include <vector> #include <locale>

Übung HP Angabe: #include <iostream> #include <vector> #include <locale> Aufgabe 1: Schreiben Sie ein C++ Programm, das die eigene Klasse Words definiert. Die Idee ist, dass diese Klasse in einem wstring Vector alle Wörter eines Textes speichert. In Ihrem private Bereich soll

Mehr

Robotersteuerung. VL Mikrorechentechnik 2. SS 2013 Professur für Prozessleittechnik

Robotersteuerung. VL Mikrorechentechnik 2. SS 2013 Professur für Prozessleittechnik Robotersteuerung VL Mikrorechentechnik 2 SS 2013 Professur für Prozessleittechnik Übersicht Design eines endlichen Zustandsautomaten für die Steuerung eines Roboters C++ Konzepte: shared memory boost::interprocess

Mehr

Informatik 1 ( ) D-MAVT F2010. STL, Algorithmen, Kürzeste Wege. Yves Brise Übungsstunde 11

Informatik 1 ( ) D-MAVT F2010. STL, Algorithmen, Kürzeste Wege. Yves Brise Übungsstunde 11 Informatik 1 (251-0832-00) D-MAVT F2010 STL, Algorithmen, Kürzeste Wege Testat Neun Serien sind durch! Auf die Korrektur von Serie 9 (oder per Email) steht die individuelle Testatinfo. Diejenigen, die

Mehr

Inhalt. Vorwort Erste Grundlagen... 15

Inhalt. Vorwort Erste Grundlagen... 15 Inhalt Vorwort... 13 1 Erste Grundlagen... 15 1.1 Historisches... 15 1.2 Die Programmiersprache C++ und die Maschine... 16 1.3 Werkzeuge zum Programmieren... 18 1.3.1 Der Editor... 18 1.3.2 Der Compiler...

Mehr

Vergleich verschiedener OO-Programmiersprachen

Vergleich verschiedener OO-Programmiersprachen Vergleich verschiedener OO-Programmiersprachen - Schnellumstieg in 15 Minuten - C++ Java Visual C++ C# Programmbeispiel in Visual C++, C#, Java und C++ Dr. Ehlert, Juni 2012 1 Inhaltsverzeichnis 1. Problemstellung

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692

Informatik Repetitorium SS 2009. Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Informatik Repetitorium SS 2009 Volker Jaedicke Volker.Jaedicke@web.de 0179 1322692 Operatoren und Datentypen Beispiel: Anweisungen Variable int a float b int c a= a % (int) (++b-1/4) Vorher 36 3.5 c=b

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

Zusammengesetzte Datentypen -- Arrays und Strukturen

Zusammengesetzte Datentypen -- Arrays und Strukturen Zusammengesetzte Datentypen -- und Strukturen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

Mehr

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in

Mehr

Arnold Willemer C++ Der Einstieg. WlLEY

Arnold Willemer C++ Der Einstieg. WlLEY Arnold Willemer C++ Der Einstieg WlLEY altsverzeichnis Vorwort 13 1 Einstieg in die Programmierung 15 1.1 Programmieren 15 1.1.1 Start eines Programms 16 1.1.2 Eintippen, übersetzen, ausführen 17 1.1.3

Mehr

C++ Standard Template Library Ausgewählte Kapitel aus Softwaretechnologie

C++ 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

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

C++ Kurs Teil 3. Standard Template Library (STL) Exceptions Kommunikation mit der shell. Übersicht vector<> algorithm: sort, for_each map<>

C++ Kurs Teil 3. Standard Template Library (STL) Exceptions Kommunikation mit der shell. Übersicht vector<> algorithm: sort, for_each map<> C++ Kurs Teil 3 Standard Template Library (STL) Übersicht vector algorithm: sort, for_each map Exceptions Kommunikation mit der shell O. Ronneberger: C++ Kurs Teil 3 Seite 1 Standard Template Library

Mehr

Projektverwaltung Problem Lösung: Modulare Programmierung

Projektverwaltung Problem Lösung: Modulare Programmierung Projektverwaltung Problem Der Sourcecode ür ein Programm wird immer länger und unübersichtlicher Eine Funktion, die in einem alten Projekt verwendet wurde, soll auch in einem neuen Projekt verwendet werden

Mehr