Sortierte Assoziative Container der STL

Größe: px
Ab Seite anzeigen:

Download "Sortierte Assoziative Container der STL"

Transkript

1 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, das einer Menge mit set multimap und multiset erlauben mehrfache identische Schlüssel Erklärung siehe STL-Algorithmen Container Zugriff Einfügen / Löschen Beginn Mitte Ende set<t> O(log N) O(1) O(1) O(1) multiset<t> O(log N) O(1) O(1) O(1) map<key,t> O(log N) O(1) O(1) O(1) multimap<key,t> O(log N) O(1) O(1) O(1) Iterator set<t>::iterator set<t>::const_iterator multiset<t>::iterator multiset<t>::const_iterator map<key,t>::iterator map<key,t>::const_iterator multimap<key,t>::const_iterator multimap<key,t>::const_iterator Iterator-Kategorie constant bidirectional 1) constant bidirectional constant bidirectional 1) constant bidirectional mutable bidirectional constant bidirectional mutable bidirectional constant bidirectional 1) Microsoft Visual C++ weicht hier vom Standard ab und realisiert "mutable bidirectional" Iteratoren C++ Standard Template Library (STL) 25

2 Assoziativer Container map map speichert Paare von Daten und Schlüsseln Die Schlüssel sind eindeutig, d.h. es gibt keine 2 Datensätze mit gleichem Schlüssel (keine Duplikate). Die assoziierten Daten werden durch direkte Angabe des Schlüssels gefunden. Eine sortierte Anordnung der Schlüssel ist für den assoziativen Zugriff nicht erforderlich, aber vorteilhaft: Durch sortierte Anordnung der Schlüssel in map verbessert sich die Zugriffszeit ( O(logN) ) Der Typ der gespeicherten Elemente ist pair<const Key, T> Die Konstanz des Schlüssels gewährleistet, dass er nach dem Einfügen nicht mehr verändert werden kann. Dies würde die Sortierung zerstören. Deklaration der Klasse in der STL Key MatrikelNr Name Location Data Sudent TelNr Node Beispiele assoziierter Daten im map-element template< class Key, class T, class Compare = std::less<key> > class map { /* */ ; // Typ der Schlüssel // Typ der Daten // Typ des Sortierers // (Key::operator< ist voreingestellt) Anwendungsbeispiele folgen C++ Standard Template Library (STL) 26

3 Anwendungsbeispiel - Wörterbuch void main(void) { map< string, string > dictionary; dictionary.insert(pair<string,string>("baum","tree")); dictionary.insert(pair<string,string>("auto","car")); cout << dictionary["baum"] << endl; // Leeres Wörterbuch erzeugen // Eintrag aufnehmen // noch ein Eintrag // Assoziativer Zugriff tree map<string,string>::iterator iter = dictionary.begin(); for( ; iter!=dictionary.end(); ++iter ) cout << (*iter).first << ' ' << (*iter).second << endl; // Sortierte Ausgabe Auto car Baum tree Falls absteigende Sortierung gewünscht ist: class Comp { public: bool operator()(string s1,string s2) { return s2<s1; ; void main(void) { Comp compare; map<string,string,comp> dictionary(compare); // weiter wie oben // Sortierte Ausgabe Buch book Auto car C++ Standard Template Library (STL) 27

4 Container map und multimap : Übersicht und Typdefinitionen Typdefinitionen map definiert folgende öffentlichen Datentypen key_type mapped_type value_type pointer reference X::key_compare Fortsetzung des Beispiels: Typ Key der Schlüsselwerte Typ T der zugeordneten Werte Typ der gespeicherten Werte, pair<const Key,T> entspricht pair<const Key,T>* entspricht pair<const Key,T>& Typ des Funktionsobjekts Compare, das die Sortierreihenfolge der Schlüssel festlegt Weitere Typen wie Sequenz-Container void main(void) { // wie bisher typedef map<string,string,comp> MapType cout << dictionary.size(); 2 MapType::key_type key = "Ei"; // Typ ist string cout << dictionary[key]; cout << dictionary.size(); 3 dictionary[key] = "egg"; MapType::mapped_type word; // Typ ist string word = dictionary[key]; cout << word; egg typedef dient hier der Abkürzung map-element Key T value_type Typ pair<key,t> key_type mapped_type Achtung: Ist die Suche nach dem Schlüssel erfolglos, wird ein neues map-element für diesen Schlüssel angelegt. Die Assoziierten Daten werden mit dem Standardkonstruktor T() erzeugt (hier: string() ). // Schreibender Zugriff auf assoziierte Daten Weitere Informationen zum Einfügen, Suchen und Löschen von Daten finden Sie hier: Breymann: C++. S C++ Standard Template Library (STL) 28

5 Beispiel: Ein Telefonbuch mit class map typedef map<string,long> PhoneMap; string ist der key_type und long ist der mapped_type typedef PhoneMap::value_type MapElement; MapElement entspricht jetzt pair<string,long> void main() { PhoneMap directory; directory.insert(mapelement("iredviel",732457)); directory["haumich"] = ; directory["bindumm"] = ; directory.insert(mapelement("iredviel",732458)); directory["iredviel"] = ; // immer noch kein 2. Telefon. Überschreibt 1. Nummer PhoneMap::const_iter iter = directory.begin(); const_iter weil read-only Zugriff ausreicht for( ; iter!=directory.end(); ++iter) cout << (*iter).first << ' ' << iter->second << ' '; // Sortierte Ausgabe: BinDumm HauMich IRedViel // Suchen im Telefonbuch string name = "BinLaden"; // Suchen mit operator[ ]: // O( logn ) long number = directory[name]; // number = 0; Achtung: Suchfehler gibt es hier nicht!! Für "BinLaden" iter = directory.find(name) if( iter!=directory.end() ) cout << (*iter).second; // O( 1 ) else cout << name << " hat kein Telefon!" << endl; directory.erase(iter); // Leereintrag "BinLaden" wieder löschen typedef dient hier der Abkürzung // Einfügen mit operator[ ] und insert: // 2. Telefon; wird nicht ausgeführt, weil Schlüssel // schon existiert // existiert jetzt ein Eintrag. // Suchen mit Iterator und find // O( logn ) // Prüfen, ob Iterator dereferenzierbar ist iterator find(k) liefert Iterator auf gefundenen Eintrag oder "pastthe-end" Iterator wenn nicht gefunden void erase(iter) löscht einzelnes Element an Position iter C++ Standard Template Library (STL) 29

6 Sortierter Assoziativer Container multimap Unterschiede zu map Elemente mit identischem Schlüssel (Duplikate) dürfen mehrfach vorkommen. Die assiziierten Daten dürfen sich dabei durchaus unterscheiden (Beispiel: mehrere Telefonnummern unter gleichem Namen) Es gibt keinen Indexoperator T& operator[ ](const key_type& k) C++ Standard Template Library (STL) 30

7 Sortierter Assoziativer Container set entspricht der Klasse map, nur dass Schlüssel und Daten zusammenfallen. setspeichert wie map keine Duplikate set hat keinen Indexoperator. Einfügen nur mit insert(key) Deklaration der Klasse in der STL void main(void) { set<string> names; names.insert("ichschonwieder"); names.insert("binschlau"); names.insert("bindumm"); set<string>::iterator iter = names.begin(); for( ; iter!=names.end(); ++iter ) cout << *iter << endl; names.insert("ichschonwieder"); pair<setiter,bool> success; success = names.insert("ichschonwieder"); if(success.second==true) cout << *(success.first) << " eingefuegt"; else cout << "Duplikat"; // Einfügen mit insert // Sortierte Ausgabe BinDumm BinSchlau IchSchonWieder // Duplikat nicht eingefügt. Wie erkennt man erfolgreiches Einfügen? pair<iterator,bool> insert(key) Duplikat C++ Standard Template Library (STL) 31

8 Container set : Übersicht und Typdefinitionen Deklaration der Klasse in der STL template< class Key class Compare = std::less<key> > class set { /* */ ; // Typ der Schlüssel // Typ des Sortierers // (Key::operator< ist voreingestellt) Definition eines set-containers: set<konto> myset; Typdefinitionen set definiert folgende öffentlichen Datentypen key_type value_type pointer reference key_compare Weitere Informationen: Typ Key der Schlüsselwerte auch Typ Key, im Gegensatz zu map entspricht Key* entspricht Key& Typ Compare. Funktionsobjekt, das die Sortierreihenfolge der Schlüssel festlegt Weitere Typen wie Sequenz-Container set-element Key value_type key_type Weitere Informationen zum Einfügen, Suchen und Löschen von Daten finden Sie hier: Breymann: C++. S C++ Standard Template Library (STL) 32

Programmieren - Standard Template Library (STL)

Programmieren - Standard Template Library (STL) Programmieren - Standard Template Library (STL) Reiner Nitsch r.nitsch@fbi.h-da.de Literatur zu STL Ulrich Breymann Designing Components with the C++ STL (2000) ISBN 0 201 67488 2 Free download of the

Mehr

Sortierte Assoziative Container der STL

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

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

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

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

Mehr

Algorithmen und Datenstrukturen WS 2007/2008

Algorithmen und Datenstrukturen WS 2007/2008 Algorithmen und Datenstrukturen WS 2007/2008 Fakultät Informatik Software-Engineering und Technische Informatik Prof. Dr. Matthias Franz mfranz@htwg-konstanz.de www-home.htwg-konstanz.de/~mfranz/heim.html

Mehr

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1 Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene

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

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

Template-Klasse Eigenschaften Voraussetzungen Anwendungsgebiete std::vector<t> Reine Sequenz von Ts; Standard* Sortieren Dynamische Größenveränderung

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

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

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

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

Lösung der OOP-Prüfung WS12/13

Lösung der OOP-Prüfung WS12/13 2.1.2013 Lösung der OOP-Prüfung WS12/13 1. Aufgabe a) Da der Konstruktor im protected-bereich steht, können keine eigenständigen Objekte der Klasse angelegt werden. Durch den protected-konstruktor wird

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

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

Ü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

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

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

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

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

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

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

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative

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

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

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

C++, STL und Qt. C++, STL und Qt. Dipl.Ing. Christoph Stockmayer, Schwaig, sto@stockmayer.de

C++, STL und Qt. C++, STL und Qt. Dipl.Ing. Christoph Stockmayer, Schwaig, sto@stockmayer.de C++, STL und Qt Objektorientiertes Programmieren mit C++, Benutzen der STL-Standard-Bibliothek und graphisches User-Interface Qt Dipl.Ing. Christoph Stockmayer, Schwaig, sto@stockmayer.de 1. Einleitung

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

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

Dokumentation zum AVL-Baum (C++)

Dokumentation zum AVL-Baum (C++) Dokumentation zum AVL-Baum (C++) Christian Blaar Monique Argus Januar 2007 Institut für Informatik Martin-Luther-Universität Halle-Wittenberg NODE.H Node.h Node legt die Grundlage für jeden Baum, denn

Mehr

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010

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

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

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

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

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

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

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

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

STL-Container und Laufzeit

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

Mehr

Generative Programmierung

Generative Programmierung 1/100 Generative Programmierung Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Grundidee: Parametrisierung 2/100 Die Abstraktion ist ein weiteres Grundprinzip der Softwaretechnik.

Mehr

Generative Programmierung

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

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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält.

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält. Collection = Containterklasse, die andere Objekte enthält. Inhalte: Schnittstellen Implementierungen Algorithmen Interfaces Maps and Collections Iterable Collection Map Vorteile: Set List Queue SortedMap

Mehr

Einstieg in die Informatik mit Java

Einstieg 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

Mehr

Objektorientiertes Programmieren mit C++ für Fortgeschrittene

Objektorientiertes 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

Mehr

Übung HP Beispielaufgaben 3

Übung HP Beispielaufgaben 3 Beispielaufgaben 3 Aufgabe 1: Implementieren Sie die Klassendeklaration und drei Funktionen der Klasse Lexikon, die Elemente vom Typ wstring speichert. Die Methode rm_punct soll an Anfang und Ende des

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

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

Mehr

13 Reguläre Ausdrücke

13 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

Mehr

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume

Mehr

Inhaltsverzeichnis. Vorwort

Inhaltsverzeichnis. Vorwort Inhaltsverzeichnis Vorwort XI 1 C/C++-Grundlagen 1 1.1 Einführung................................ 1 1.1.1 Entwicklungsgeschichte: Von K&R-C nach C++........ 1 1.1.2 Beispielprogramme.......................

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

Teil V. Generics und Kollektionen in Java

Teil V. Generics und Kollektionen in Java Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

JAVA KURS COLLECTION

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

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Mapra: C++ Teil 2. Felix Gruber, Sven Groß. 2. Mai 2017 IGPM. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai / 11

Mapra: C++ Teil 2. Felix Gruber, Sven Groß. 2. Mai 2017 IGPM. Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai / 11 Mapra: C++ Teil 2 Felix Gruber, Sven Groß IGPM 2. Mai 2017 Felix Gruber, Sven Groß (IGPM) Mapra: C++ Teil 2 2. Mai 2017 1 / 11 Themen vom letzten Mal Kontrollstrukturen Funktionen const Referenzen Zeiger

Mehr

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl

Mehr

Klausur Programmieren 2 SS 2016

Klausur Programmieren 2 SS 2016 Klausur Programmieren 2 SS 2016 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweise: Formulieren Sie Ihre Lösungen auf dem Aufgabenblatt

Mehr

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume Digitale Suchbäume Heaps

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume. B-Bäume Digitale Suchbäume Heaps Teil 1: Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume AVL-Bäume Splay-Bäume B-Bäume Digitale Suchbäume Heaps M.O.Franz; Oktober 2007 Algorithmen und

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

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

DAP2-Programmierpraktikum Einführung in C++ (Teil 2) DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und

Mehr

Programmieren - C++ Templates

Programmieren - C++ Templates Programmieren - C++ Templates Reiner Nitsch r.nitsch@fbi.h-da.de Was sind Templates? C++ Templates ermöglichen generische Programmierung. Das ist Programmierung unabhängig vom speziellen Objekt-Typ Templates

Mehr

Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp

Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden ffl mitp Inhaltsverzeichnis Einleitung 19 1 Grundlagen 21 Entwicklung und Eigenschaften von C + + 22 Objektorientierte Programmierung

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

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

Software Praktikum: C++ und LEDA / STL Sommersemester 2003

Software 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

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

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

Mehr

Collections. Arthur Zaczek. Nov 2015

Collections. Arthur Zaczek. Nov 2015 Arthur Zaczek Nov 2015 1 Collections 1.1 Definition Anhäufung von Objekten Werte können hinzugefügt, gesucht und gelöscht werden Implementierung mit verschiedenen Algorithmen, je nach Nutzung 1.2 Grundlegende

Mehr

Hydroinformatik I: Klassen

Hydroinformatik I: Klassen Hydroinformatik I: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 27. November 2015 1/13 Prof.

Mehr

Visuelle Kryptographie. Anwendung von Zufallszahlen

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

Mehr

Einführung in die STL 307

Einführung in die STL 307 Einführung in die STL 307 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: Iteratoren

Mehr

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

Gran Turismo Cars - WS 11/12

Gran Turismo Cars - WS 11/12 WS 2011/2012 Stephan Gimbel Repetitorium PAD 1+2 Übungsblatt Gran Turismo Cars - WS 11/12 Empfehlung: Arbeiten Sie in kleinen Schritten und sorgen Sie dafür, dass Sie jederzeit ein lauffähiges Anwendungssystem

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden Einleitende Bemerkungen Einleitende Bemerkungen Aspekte Aufbau von sinnvollen Klassenhierarchien Verwaltung von Objekten unterschiedlichen Typs Mitarbeiter Besonderheiten der Anwendung jeder Angehörige

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Übung 3: Die generische Klasse BinärerSuchbaum in Java 1 Datenelemente der Klasse BinaererSuchbaum Das einzige Datenelelement in dieser Klasse ist die Wurzel vom Typ BinaerBaumknoten. Die Klasse BinaerBaumknoten

Mehr

8. Referenzen und Zeiger

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

Mehr

16. Dezember 2004 Dr. M. Schneider, P. Ziewer

16. Dezember 2004 Dr. M. Schneider, P. Ziewer Technische Universität München WS 2004/2005 Fakultät für Informatik Lösungsvorschläge zu Blatt 8 A. Berlea, M. Petter, 16. Dezember 2004 Dr. M. Schneider, P. Ziewer Übungen zu Einführung in die Informatik

Mehr

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

Grundlagen der Informatik 12. Strukturen

Grundlagen der Informatik 12. Strukturen 12. Strukturen Strukturen und deren Komponenten Strukturen im Projekt Dynamisch erstellte Strukturen Strukturen und Operatoren Strukturen und Funktionen Einfach verkettete Liste Grundlagen der Informatik

Mehr

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder

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

Relationen-Algebra und Persistenz Teil I

Relationen-Algebra und Persistenz Teil I Relationen-Algebra und Persistenz Teil I Implementierungskonzepte und Anforderungen an Attributdatentypen LG Datenbanksysteme für neue Anwendungen Inhalt FLOBs DBArrays Attributsdatentypen Folie 2 Bisher:

Mehr

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Motivation für Generics: Containertypen speichern eine Anzahl von Elementen anderer Typen Wie definiert man die Containerklasse ArrayList? In der Definition könnte man als Elementtyp Object angeben maximale

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

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren class Vektor public: double k1, k2; // Deklaration der Klasse Vektor // Elementvariablen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen 1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume Übersicht Datenstrukturen und lgorithmen Vorlesung : Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-/dsal/ 1 Suche Einfügen

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr