Развернуть
- Motivation for templates.
- How it work? Instantiation.
- Template argument deduction from a function call.
- Class templates.
- Function templates specialization.
- Class templates specialization.
- Member templates.
- Traits classes.
- Policy classes.
- Functors from
<functional>
. std::bind
.
- Lambda-expression.
- SFINAE.
- Iterator implementation until and since C++17.
Развернуть
- Принцип разделения интерфейса (ISP).
- SOLID.
- Проектирование для задачи линейной аппроксимации набора точек.
Развернуть
- Графическая нотация для отношений.
- Пример: проектирование программы форматирования текста.
- Принцип подстановки Лискоу (LSP).
- Принцип инверсии зависимостей (DIP).
Развернуть
- Наследование.
- Композиция. Выбор между композицией и наследованием.
- Агрегация. Разница между композицией и агрегацией.
- Ассоциация.
- Пример замены композиции на ассоциацию.
- Принцип открытия-закрытия (OCP).
- Как вносить изменения, не нарушая принцип OCP? Выделение абстракции.
Развернуть
- Общие требования к классам (декомпозиция, модульная композиция, модульная понятность, модульная непрерывность, модульная защищённость).
- Простая и незамысловатая реализация программы вычисления медиан.
- Реализация с одним большим классом.
- Принцип одной зоны ответственности (Single Responsibility Principle, SRP).
- Разнесение зон ответственности через структуры данных. Функциональный подход.
- Разделение вычисления медиан на классы Parser и MediansMedian.
- Альтернативное разделение на классы: Parser, ParserClient и MediansMedian. «Активные» и «пассивные» классы.
Развернуть
- Abnormal program termination.
- Return error codes.
- Macro
errno
.
try
/catch
/throw
.
- Using objects as exceptions.
- Exception specifications.
- Unwinding stack.
- More exception features.
RAII
.
- Exceptions in constructors.
- Best practices.
Развернуть
- Copying items from containers to containers.
- Sorting containers.
- Transforming items in containers.
- Finding items.
- Locating patterns in strings with
std::search
.
- Dictionary merging tool.
- Fill and generate containers.
- Checks by predicate.
- Functor.
Развернуть
std::list
.
std::forward_list
.
std::map
.
std::multimap
.
std::set
.
std::unordered_map
.
std::unordered_multimap
.
std::unordered_set
.
- Erase-remove idiom on
std::vector
.
- Filtering duplicates.
- Fast or safe way to access
std::array
or std::vector
.
- Word frequency counter.
Развернуть
- Стандартные потоки ввода / вывода (
standard input / output streams
).
- Манипуляторы (
manipulators
).
- Файловый поток (
std::fstream
).
- Строковый поток (
std::stringstream
).
std::string
.
- Итераторы (
iterators
).
auto
& range-based for-loop
.
Развернуть
- Виртуальный деструктор (
virtual destructor
).
- Спецификатор
final
.
- Спецификатор
override
.
- Абстрактный класс (
abstract class
).
- Модификаторы доступа (
access modifiers
).
- Спецификатор
friend
.
- Отличия
struct
и class
.
- Пространство имен (
namespace
).
- Перегрузка операторов (
operators overloading
).
- Правило трех (
rule of three
).
- Спецификаторы
default
и delete
.
- Аргументы по умолчанию (
default arguments
).
Действия