Книги по классическим алгоритмам и структурам данных и сборники задач с решениями. Сборники задач по самому языку C++ будут в части с обзорами профессиональной литературы.
Мариус Бансила. Решение задач на современном C++
302 страницы. ДМК, 2019
Marius Bancila. The Modern C++ Challenge. Packt, 2018
Задачи и решения на C++17.
Вот темы и некоторые задачи:
- математические задачи (код Грея, преобразование чисел в римскую запись, вычисление \(\pi\), проверка ISBN...),
- особенности языка (перечисление адресов в IPv4, двумерный массив с базовыми операциями, функция min() с переменным числом аргументов, литералы разных температурных шкал...),
- строки и регулярные выражения, потоки данных и файловые системы (треугольник Паскаля, удаление пустых строк из файла, удаление файлов старше заданной даты...),
- дата и время (время выполнения программы, число дней между датами, календарь на месяц...),
- алгоритмы и структуры данных (очередь с приоритетом, циклический буфер, двойной буфер, самый часто встречающийся элемент в диапазоне, текстовая гистограмма, фильтрация списка телефонных номеров, преобразование списка телефонных номеров, генерация всех перестановок символов в строке, средний рейтинг фильмов, алгоритм объединения в пары, алгоритм «сшивания», алгоритм выбора, алгоритм сортировки, кратчайший путь между узлами, программа Weasel, игра «Жизнь»),
- конкурентность, шаблоны проектирования (проверка пароля, генерация паролей...),
- сериализация данных (XML, JSON, создание PDF из коллекции изображений),
- архивы, изображения и базы данных (поиск в ZIP-архиве, создание PNG-файла, работа с SQLite),
- криптография (шифры, Base64, хеш-сумма файла...), сети и службы.