Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

C++: Standard- und Boost-Library Workshop

  • Inhalt
     
  • Ziele -
    Ihr Nutzen
  • Teilnehmer
     
  • Voraussetzungen
     

Neben der sicheren Beherrschung der Sprachsyntax werden C++-Entwicklerinnen und -Entwicklern solide Kenntnisse im Bereich der Standard-Bibliothek erwartet, um deren Funktionalität im Rahmen der zu lösenden Aufgaben untertstützend einzusetzen. Da die Standard-Bibliothek der ersten Standardisierung (mit C++98) durch die Sprachstandards (C++11 und C++14) auf den nahezu doppelten Umfang gewachsen ist, wurde der STL-Teil ausgelagert (abgesehen von einem sehr kurzen Überblick), während das hier beschriebenen Training alle anderen Teile behandelt (siehe auch Inhaltsangabe). n Bereichen, in denen nach aktuellem C++-Standard noch Lücken bestehen, werden auch auf der Boost-Plattform entstandene Library-Komponenten einbezogen, ebenso wenn Boost-Komponenten vorhandene Standard-Funktionalitäten in besonders praxisrelevanter Weise erweitern.

Software-Entwickler, Software-Entwicklungsleiter, Software-Architekten.

Grundlegende Programmierkenntnisse in C++.

DURCH C++11/14 ERSETZE BOOST-FEATURES

Container-Initialisierung

  • C++11 "std::list_initializer"
  • vs. Boost.Assign

Sperren von Defaults

  • C++11 "= delete"
  • vs. Boost.NonCopyable

Bereichsbasierte Schleifen

  • C++11: Range-"for"
  • vs. BOOST_FOREACH

Lambdas (Funktions-Literale)

  • C++11 Lambda-Syntax
  • vs. Boost.Lambda

Statische Zusicherungen

  • C++11 "static_assert"
  • vs. BOOST_STATIC_ASSERT

Binäre Konstanten

  • C++14 "0bXXXX"
  • vs. BOOST_BINARY

"Move-Only"-Datentypen

  • C++11 Rvalue-Referenzen
  • Boost.Scoped_ptr
  • Boost.Ptr_container

KLEINERE HELFER

Umwandlung zwischen Strings / Zahlen

  • C++11 "std::to_string" / "std::strtoXX"
  • Boost "lexical_cast"
  • Boost "numeric_cast"

C++14 Standard-Literal-Suffixe

Boost.ScopeExit

Boost.ProgramOptions

ZEICHENKETTEN-VERARBEITUNG

Zeichen-Grundypen und -Kodierung

"std::string" vs. "std::vector"

Reguläre Ausdrücke für

  • Vergleiche
  • Zerlegungen
  • Ersetzungen

Boost.String_algo

Boost.Tokenizer

CONTAINER, ALGORITHMEN UND ITERATOREN

Kurzer STL-Überblick

Auswahlkriterien für Container

  • STL-Container (inkl. "unordered associative")
  • Boost-Container (BiMap, MultiIndex, PropertyTree)

Boost-Erweiterungen bei

  • Algorithmen (insbesondere Boost.Range)
  • Iteratoren (insbesondere Boost.Iterator)

Tuple

Boost.Optional

Boost.Any

Boost.Variant

EIN-/AUSGABE (STREAMS)

Grundlegendes Design

Erweiterbarkeit

  • bei E/A-Operatoren
  • beim Buffer-Interface

Boost.IoStateSavers

Boost.Format

Boost.IoStreams

Boost.Serialization

Boost.FileSystem

FUNKTIONALE PROGRAMMIERUNG

Funktionen, Funktoren und Lambdas ("Callables")

Lambdas und "Closures"

Lambdas vs. "std::bind"

Type-Erasure mit "std::function"

Boost.Bind und Boost.Function

SMART-POINTER

C++11 "std::unique_ptr"

C++11 "std::shared_ptr"

C++11 "std::weak_ptr"

Boost.IntrusivePtr

CHRONO-LIBRARY

Grundlegende Konzepte

Zeitpunkte ("clocks")

Zeitspannen ("durations")

Boost.Chrono

RANDOM-LIBRARY

Vor-/Nachteile von "std::rand" (C89)

C++11 Generatoren für Zufallszahlen

C++11 Zufalls-Verteilungen

Boost.Random

PARALLELISIERUNG VON ABLÄUFEN

C++11 Abstraktionen

  • asynchroner Funktionsaufruf
  • "Mutex"- und "Lock"-Synchronisation
  • "Condition Variables"

C++11 Explizites Multithreading

Boost.Thread

COMPILEZEIT-METAPROGRAMMIERUNG

C++11 Standardisierte Type-Traits

  • Compile-Zeit Tests …
  • … und Typ-Berechnungen
  • C++14 Vereinfachungen

C++11 "std::enable_if"

C++11 "std::ratio"

C++1z "Fold Expressions"

Boost.Calltraits

Boost.MPL

Überbick zu weiteren Boost-Libraries

  • Boost.Asio Boost.Exception Boost.Flightweight
  • Boost.Fusion
  • Boost.Interval
  • Boost.Msm und Boost.Statechart
  • Boost.Preprocessor
  • Boost.PropertyMap
  • Boost.Proto,
  • Boost.Rational
  • Boost.Signals / Boost.Signals2
  • Boost.Spirit (Qi, Karma, Phoenix)
  • Boost.Test
  • Boost.Tribool
  • Boost.Units
  • Boost.Uuid
  • Boost.Wave
  • Boost.Xpressive

Begleitend: Mikro-Projekte

  • Demo-Code und/oder Aufgaben zur eigenen Bearbeitung nach Wahl
  • inkl. anschließender Erläuterung möglicher Variationen

Dieses Training entspricht teilweise dem früheren "C++11 und Boost Libraries Workshop", jedoch mit deutlich geänderten Schwerpunkten gegenüber der Durchführung bis Mitte 2013.


Im Preis enthalten:

Mittagessen, Getränke, Trainingsunterlagen und Teilnahmezertifikat


Für Personalabteilungen

Sie können in unserem Online-Formular bis zu 5 Teilnehmer auf ein Training buchen.
Möchten Sie mehrere Teilnehmer auf verschiedene Trainings buchen, kontaktieren Sie uns bitte!

Bitte beachten Sie auch unser Bonusprogramm bei der gleichzeitigen Buchung von mehreren Trainings und/oder Teilnehmern.

Für Personalabteilungen

Verwandte Trainings

C++ Kurs: Objektorientierte Programmierung mit C++
Trainings-Code: C++

C++ Schulung für Fortgeschrittene: Weiterführende Programmiertechniken für C++ Entwickler
Trainings-Code: C++/FOR

Modernes C++: Neuerungen durch C++11 und C++14 bei Sprachsyntax, Bibliothek und Templates
Trainings-Code: C++/MOD

C++11 Multithreading
Trainings-Code: C++11-MT

OOP-Grundlagen: Sprachunabhängiger Einstieg in die objektorientierte Programmierung
Trainings-Code: OOP-G


Verwandte Trainings

Offenes Training

TerminPreis *Dauer
23.04. – 27.04.20181.980,00 €4,5 Tage 
27.08. – 31.08.20181.980,00 €4,5 Tage 
10.12. – 14.12.20181.980,00 €4,5 Tage 
04.03. – 08.03.20191.980,00 €4,5 Tage 
Anmeldecode: C++/LIB
* Alle Preise zzgl. der gesetzlichen USt.


> Download Blanko-Anmeldeformular
> Trainingsbeschreibung als PDF

Inhouse Training

In maßgeschneiderten Workshops kombinieren wir Ihre konkreten Projektaufgaben mit unserem Trainingsangebot. Dabei berücksichtigen wir Ihre Anforderungen bezüglich Inhalt, Zeit, Ort, Dauer, technischem Umfeld und Vermittlungsmethodik.

Für Ihre Anfrage oder weiterführende Informationen stehen wir Ihnen gern zur Verfügung.

> Trainingsbeschreibung als PDF

Coaching

Unsere Coaching-Angebote bieten den großen Vorteil, dass unsere Experten ihr Wissen und ihre Erfahrungen direkt in Ihren Lösungsprozess einbringen und damit unmittelbar zu Ihrem Projekterfolg beitragen.

Für Ihre Anfrage oder weiterführende Informationen stehen wir Ihnen gern zur Verfügung.

C++: Standard- und Boost-Library Workshop

Inhalt

DURCH C++11/14 ERSETZE BOOST-FEATURES

Container-Initialisierung

  • C++11 "std::list_initializer"
  • vs. Boost.Assign

Sperren von Defaults

  • C++11 "= delete"
  • vs. Boost.NonCopyable

Bereichsbasierte Schleifen

  • C++11: Range-"for"
  • vs. BOOST_FOREACH

Lambdas (Funktions-Literale)

  • C++11 Lambda-Syntax
  • vs. Boost.Lambda

Statische Zusicherungen

  • C++11 "static_assert"
  • vs. BOOST_STATIC_ASSERT

Binäre Konstanten

  • C++14 "0bXXXX"
  • vs. BOOST_BINARY

"Move-Only"-Datentypen

  • C++11 Rvalue-Referenzen
  • Boost.Scoped_ptr
  • Boost.Ptr_container

KLEINERE HELFER

Umwandlung zwischen Strings / Zahlen

  • C++11 "std::to_string" / "std::strtoXX"
  • Boost "lexical_cast"
  • Boost "numeric_cast"

C++14 Standard-Literal-Suffixe

Boost.ScopeExit

Boost.ProgramOptions

ZEICHENKETTEN-VERARBEITUNG

Zeichen-Grundypen und -Kodierung

"std::string" vs. "std::vector"

Reguläre Ausdrücke für

  • Vergleiche
  • Zerlegungen
  • Ersetzungen

Boost.String_algo

Boost.Tokenizer

CONTAINER, ALGORITHMEN UND ITERATOREN

Kurzer STL-Überblick

Auswahlkriterien für Container

  • STL-Container (inkl. "unordered associative")
  • Boost-Container (BiMap, MultiIndex, PropertyTree)

Boost-Erweiterungen bei

  • Algorithmen (insbesondere Boost.Range)
  • Iteratoren (insbesondere Boost.Iterator)

Tuple

Boost.Optional

Boost.Any

Boost.Variant

EIN-/AUSGABE (STREAMS)

Grundlegendes Design

Erweiterbarkeit

  • bei E/A-Operatoren
  • beim Buffer-Interface

Boost.IoStateSavers

Boost.Format

Boost.IoStreams

Boost.Serialization

Boost.FileSystem

FUNKTIONALE PROGRAMMIERUNG

Funktionen, Funktoren und Lambdas ("Callables")

Lambdas und "Closures"

Lambdas vs. "std::bind"

Type-Erasure mit "std::function"

Boost.Bind und Boost.Function

SMART-POINTER

C++11 "std::unique_ptr"

C++11 "std::shared_ptr"

C++11 "std::weak_ptr"

Boost.IntrusivePtr

CHRONO-LIBRARY

Grundlegende Konzepte

Zeitpunkte ("clocks")

Zeitspannen ("durations")

Boost.Chrono

RANDOM-LIBRARY

Vor-/Nachteile von "std::rand" (C89)

C++11 Generatoren für Zufallszahlen

C++11 Zufalls-Verteilungen

Boost.Random

PARALLELISIERUNG VON ABLÄUFEN

C++11 Abstraktionen

  • asynchroner Funktionsaufruf
  • "Mutex"- und "Lock"-Synchronisation
  • "Condition Variables"

C++11 Explizites Multithreading

Boost.Thread

COMPILEZEIT-METAPROGRAMMIERUNG

C++11 Standardisierte Type-Traits

  • Compile-Zeit Tests …
  • … und Typ-Berechnungen
  • C++14 Vereinfachungen

C++11 "std::enable_if"

C++11 "std::ratio"

C++1z "Fold Expressions"

Boost.Calltraits

Boost.MPL

Überbick zu weiteren Boost-Libraries

  • Boost.Asio Boost.Exception Boost.Flightweight
  • Boost.Fusion
  • Boost.Interval
  • Boost.Msm und Boost.Statechart
  • Boost.Preprocessor
  • Boost.PropertyMap
  • Boost.Proto,
  • Boost.Rational
  • Boost.Signals / Boost.Signals2
  • Boost.Spirit (Qi, Karma, Phoenix)
  • Boost.Test
  • Boost.Tribool
  • Boost.Units
  • Boost.Uuid
  • Boost.Wave
  • Boost.Xpressive

Begleitend: Mikro-Projekte

  • Demo-Code und/oder Aufgaben zur eigenen Bearbeitung nach Wahl
  • inkl. anschließender Erläuterung möglicher Variationen

Dieses Training entspricht teilweise dem früheren "C++11 und Boost Libraries Workshop", jedoch mit deutlich geänderten Schwerpunkten gegenüber der Durchführung bis Mitte 2013.

Merkzettel


Sie haben derzeit keine Trainings auf dem Merkzettel.