Книги по классическим алгоритмам и структурам данных и сборники задач с решениями. Сборники задач по самому языку C++ будут в части с обзорами профессиональной литературы.
302 страницы. ДМК, 2019
Marius Bancila. The Modern C++ Challenge. Packt, 2018
Задачи и решения на C++17.
Вот темы и некоторые задачи:
848 страниц. Вильямс, 2003
Franks M. Carrano, Janet J. Prichard. Data Abstraction and Problem Solving with C++. Addison-Wesley, 2002
Обложка гласит: «По мотивам книги „Стены и зеркала“ Пола Хелмана и Роберта Верроффа». Авторы признаются, что их труд полностью повторяет техническое и литературное содержание, примеры, рисунки и упражнения оригинала. Хотя что-то они добавили.
В книге две части: методы решения задач (рекурсия, абстракция, связные списки), решение задач с помощью абстрактных типов данных (стеки, очереди, эффективность алгоритмов, сортировка, деревья, таблиц, очереди с приоритетом, графы). Принципы программирования и разработки программного обеспечения.
Приложения: основы языка C++, ASCII-коды, заголовочные файлы и стандартные функции, метод математической индукции, стандартные шаблонные классы, операторы языка C++.
272 страницы. Наука и Техника, 2007
Много интересных тем, но код иногда завязан на C++ Builder.
1056 страниц. Вильямс, 2016/2019
Robert Sedgewick. Algorithms in C++. Addison-Wesley, 2009
Предыдущее издание (оригинал 1999 года) было двухтомником, в первом томе шли части с первой по четвёртую, отдельным томом издавалась пятая часть. В предисловии консультант по C++ пишет, что они с автором старались сосредоточиться на алгоритмах, а не деталях языка, потому использовали не все возможности, например, инициализацию в конструкторах, std::string, большинство контейнеров и «умные» указатели.
У того же автора есть книги по алгоритмам на языках C и Java (в соавторстве).
Часть 1. Анализ. Введение, принципы анализа алгоритмов.
Часть 2. Структуры данных. Элементарные структуры данных, абстрактные типы данных, рекурсия и деревья.
Часть 3. Сортировка. Элементарные методы сортировки, быстрая сортировка, слияние и сортировка слиянием, очереди по приоритетам и пирамидальная сортировка, поразрядная сортировка, методы сортировки специального назначения (чётно-нечётная сортировка слиянием Бэтчера, сети сортировки, внешняя сортировка, различные реализации сортировки-слияния, параллельная процедура сортировки-слияния).
Часть 4. Поиск. Таблицы символов и деревья бинарного поиска, сбалансированные деревья, хеширование, поразрядный поиск, внешний поиск.
Часть 5. Алгоритмы на графах. Виды графов и их свойства, поиск на графе, орграфы и ориентированные ациклические графы, минимальные остовные деревья, кратчайшие пути, потоки в сетях.
816 страниц. Бином, 1999
William Topp, William Ford. Data Structures with C++. Prentice-Hall
Базовые типы данных, абстрактные типы данных (классы, примеры, массивы, пример — треугольная матрица), классы коллекций, стеки и очереди, абстрактные операторы (на примере рациональных чисел), параметризованные типы данных (вычисление инфиксного выражения), динамическая память (массивы, строки, множества, решето Эратосфена), связные списки, рекурсия (бинарный поиск, комбинаторика, лабиринт), деревья, наследование и абстрактные классы, более сложные нелинейные структуры (пирамид, AVL-деревья, графы), сортировка и поиск.
Приложение: ответы на некоторые упражнения.
560 страниц. Бином, 2003
Art Friedman, Lars Klander, Mark Michaelis, Herb Schildt. C/C++ Annotated Archives. McGraw-Hill Osborne Media, 1999
Репринт книги «C/C++. Архив программ» (2001).
Сортировка, связные списки, двоичные деревья, смешанные таблиц и разреженные массивы, управление памятью (аллокаторы), файлы и каталоги, шифрование, «управление исходным кодом» (сканирование кода, вывод его в другом формате, то есть программа выполняет синтаксический разбор кода и другие вещи), работа с сетью (WinSock API, сокеты), финансовые, статистические расчёты, фракталы, реализация интерпретаторов (Small Basic), STL, CGI.