Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

C++: Standard- und Boost-Library Workshop - Präsenz-Training

  • Inhalt
     
  • Ziele -
    Ihr Nutzen
  • Teilnehmer
     
  • Voraussetzungen
     

Neben der sicheren Beherrschung der Sprachsyntax werden von C++-EntwicklerInnen 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).

In 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

Im Preis enthalten:
Mittagessen, Getränke, Trainingsunterlagen und Ihr Teilnahmezertifikat


ALL INCLUSIVE!

Verwandte Trainings

C++ Schulung für Ein- und Umsteiger: Grundlegende Programmiertechniken für C++ Entwickler - Präsenz-Training
Anmeldecode: C++

C++ Schulung für Fortgeschrittene: Weiterführende Programmiertechniken für C++ Entwickler - Präsenz-Training
Anmeldecode: C++/FOR

Modernes C++: Die wichtigsten Sprachneuerungen von C++11 bis C++20 - Präsenz-Training
Anmeldecode: C++/MOD

C++ Standard Template Library: STL Container und Algorithmen - Präsenz-Training
Anmeldecode: C++/STL

C++ Multithreading - Präsenz-Training
Anmeldecode: C++MT

OOP-Grundlagen: Sprachunabhängiger Einstieg in die objektorientierte Programmierung - Präsenz-Training
Anmeldecode: OOP-G

Objektorientierte Softwareentwicklung: Spezielle Programmierprinzipien mit C++ - Der Weg zum Clean Code - Präsenz-Training
Anmeldecode: OOPFC++

Coaching: Programmiersprachen
Anmeldecode: C-PRG-LAN

Coaching: Embedded- und Echtzeit-Programmierung
Anmeldecode: C-EMB-PRG


Verwandte Trainings

Präsenz-Training

Preis *Dauer
-4 Tage
Anmeldecode: C++/LIB
* Preis je Teilnehmer, in Euro zzgl. USt.
> Download Blanko-Anmeldeformular> Trainingsbeschreibung als PDF

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

Live-Online - Deutsch

Dauer
4 Tage  

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.

Coaching: Embedded- und Echtzeit-Programmierung

C++: Standard- und Boost-Library Workshop - Präsenz-Training

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