Das Computer Science Center ist eine gemeinsame Initiative des
Computer Science Club von POMI RAS,
JetBrains und der Yandex
Data Analysis School .
Das Zentrum soll talentierten Studenten und Absolventen ermöglichen, sich in Bereichen zu entwickeln, die für sie von Interesse sind: Informatik, Datenwissenschaft oder Software-Engineering.
Der zweiteilige C ++ - Kurs im Zentrum wird von Valery Mikhailovich Lesin,
valery-l , Dozent am CS-Zentrum und gemeinsamer Magistrat ITMO und JetBrains „Software Engineering / Software Engineering“, technischer Direktor von
Simlabs, unterrichtet .
Der zweite Teil wird dazu beitragen, die meisten Funktionen von modernem C ++ zu beherrschen. Höchstwahrscheinlich werden Sie am Ende des zweiten Semesters kein Guru, aber die Fähigkeit sollte ausreichen, um C ++ in den meisten Projekten effektiv einzusetzen, wenn die Vorteile dort anwendbar sind.
Wir werden die neuen Funktionen der Sprache und der Standardbibliothek untersuchen: Semantik verschieben, Binden / Funktion, enable_if / if constexpr, Coroutinen und andere. Schauen wir uns einige typische Aufgaben an: Multithread-Programmierung, Verwendung von Bibliotheken unter Windows und Linux und andere.
Schöne Aussicht!
1. Standardbibliothek. Zusammensetzung, STL-Container, Containertypen, Vektorcontainer, Iteratoren, Funktionsweise des Vektors. Sdt :: Listencontainer, Adapter, assoziative Container, Karteniteration, Suchen und Einfügen in die Karte. Indizierung, Entfernung von der Karte (Set). Andere assoziative Container.
2. Verschieben Sie die Semantik und die perfekte Weiterleitung. Schnelle Programme. Rückgabewertoptimierung. Lvalue vs Rvalue. So unterscheiden Sie ein temporäres Objekt von einem nicht temporären. Konvertieren von & <-> const & <-> &&. Konstruktor gegen andere Konstruktoren verschieben. Gibt den vs && Wert von der Funktion zurück. Große Objekte nach Wert zurückgeben, nach Wert übertragen. Weiterleitungsargumentproblem. Neue Regeln für Links in C ++ 11. Perfekte Weiterleitung.
3. Algorithmen und Funktoren. Standardalgorithmen, Beschreibung der Algorithmen. Nicht modifizierende und modifizierende Vorgänge. Sortieren und suchen. Container gegen Iteratoren. Standard-Funktoren. Boost Reichweite. Reichweitenkonzept.
4. binden & funktionieren. Aufgabe: Rückruf aufrufen. Ein bisschen Magie - std :: bind. So vermeiden Sie das Kopieren. ref / cref. Verwenden Sie Binden mit Funktoren. Methoden aufrufen. Nesting binden. std :: function. Synergistischer Effekt von Bindung und Funktion. Leistung. Wie Platzhalter funktionieren.
5. Ausnahmen. Möglichkeiten, mit Fehlern umzugehen. versuche ... zu fangen. Arten von Ausnahmen RAII verwenden. Parameter übergeben. Klassenstapel. Sicherheitsgarantien für Ausnahmen. Garantiert keine Ausnahmen. Stapel kopieren. Reduzierte Stapelanforderungen. Angabe von Ausnahmen. noexcept-Operator und noexcept-Spezifikation (C ++ 11). STL-Container. Garantien und Anforderungen stapeln sich.
6. Zu SFINAE oder nicht zu SFINAE. Codeauswahl basierend auf Typ. Typauswahl nach Bedingung. Reduzierbarkeitstest. Suchen Sie nach der Basisklasse. SFINAE. Auf Behälter prüfen. Auswahl nach Typ Eigenschaft.
7. C ++ - Innovationen. Anonyme Funktionen, Auto, Decltype, Variadic Templates, Parameter Pack, Pack Expansion & Fold Expression. Nicht statische Initialisierer von Datenelementen, wenn constexpr.
8. Zeilen. Eingabe / Ausgabe. Codierung (Zeichensatz). String std :: basic_string. Grundlegende Zeichenfolgenoperationen. Boost-String-Algorithmen. Text vs Binärdateiformat. E / A-Streams, Ausgabe, Eingabe, Stream-Status, formatierte Eingabe / Ausgabe. Manipulatoren, Dateistreams.
9. Der Präprozessor. Verwendung und Anwendbarkeit von Makros. Definition von Konstanten, bedingte Kompilierung. Wache einschließen. Makrofunktion. Ein Token in eine Zeichenfolge verwandeln und Token verketten. Mehrzeiliges Makro, vordefiniert definiert. behaupten. Variables Makro, Makroüberladung. Pimpl-Redewendung.
10. Bibliotheken. Statische und dynamische Bibliotheken. Statisch gegen Dynamisch. Herunterladen von Bibliotheken ohne vorherige Verknüpfung. Exportierte Funktionen. COM-Technologie.
11. Multithreading. Prozess und Threads. Arten von Multitasking. Problemsituationen. Stream erstellen. Das Stream-Objekt ist std :: thread. Hilfsfunktionen. Gegenseitiger Ausschluss. Schlossverwaltung. Ausnahmefang. Ausnahme erneut werfen. Bedingungsvariablen.
12. Multithreading. Teil 2. Aufgeschobene Berechnungen. Zukunft und Versprechen. Async und Zukunft. Warteschlange von Ereignissen / Nachrichten. Verträge, Konzepte.
Erster Teil des Kurses