Валерий Викторович Лаптев. C++. Экспресс-курс
512 страниц. БХВ-Петербург, 2004

Обычный учебник. Немного устаревший. Знакомит с языком, библиотекой, отдельная часть — о программировании под Windows.
Возмущает только название раздела «Тяжёлое наследие C».
Приложения: системы фирмы Borland, Visual C++, ссылки по теме.
Валерий Викторович Лаптев, Александр Васильевич Морозов, Анастасия Валерьевна Бокова. C++. Объектно-ориентированное программирование. Задачи и упражнения
288 страниц. Питер, 2007

Как методичку такое дать студентам, наверное, нормально. А больше некому посоветовать.
Приложения: функции для работы с символьными массивами, обобщённые алгоритмы, рекомендуемые системы программирования.
Валерий Викторович Лаптев. C++. Объектно-ориентированное программирование
464 страницы. Питер, 2008

Ещё один обычный учебник.
Приложение: строки в C++.
Валерий Викторович Лаптев. C++. 20 уроков для начинающих
368 страниц. BHV, 2025

Дополнение от 10 июля 2025.
Содержание:
I. Знакомство с C++
- Начало
- Здравствуй, C++
- Погружаемся в C++
- Встроенные типы данных
- Выбор есть всегда (ветвеления — Прим. DZ)
- Повторение — мать учения (циклы — Прим. DZ)
- Функции
- С пользой для дела
II. Работа с данными в C++
- Массивы
- Создаём новые типы
- Знакомство с указателями
- Массивы и функции
- Строки, строки, строки
- Снова о функциях
- Печальная действительность
III. Вглубь C++
- Как всё устроено
- Опять функции
- Снова указатели
- Учимся писать и читать
- Большие программы
Первый вопрос к книге — кто целевая аудитория? С первой страницы, с предисловия, здесь и школьники с их ЕГЭ, и будущие олимпиадники, и просто первокурсники или новички. В конце книги есть глава «ЕГЭ и файлы». (Как вообще судить о книге про C++, если в ней упоминается бесчеловечный термин «контрольно-измерительные материалы» (КИМ)?)
Если честно, текстовая часть, а особенно врезки с «историями из жизни» — это бесполезная графомания. Даже названия половины «уроков» (глав) — какие-то бессодержательные. В первой врезке — история о том, что получилось же у автора научить своего первого дипломника Паскалю с нуля, дипломник написал транслятор с языка Java на C++, это был один из лучших у них дипломных проектов в 1999. И всё благодаря совету: сначала составлять «план» на русском языке.
«Hello, world!» вполне обычный. А дальше автор предугадывает вопросы от студентов: а как писать русскими буквами в консоль? Вот так писать.
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){ system("chcp 1251>nul");
cout << "Привет, мир!" << endl;
return 0;
}
А как считать строку с пробелами? Вот вам тоже ответ. Такие мелочи обычно в хорошей литературе не обсуждаются.
Автор путается в терминологии. Например, объявление переменной int k; он называет оператором, а заголовочные файлы — библиотеками. Проскакивает редкий термин реализованные указатели (вместо умных указателей или интеллектуальных указателей).
«В C++11 макрос [NULL] был переопределён как nullptr».
Если понимать текст буквально, nullptr автор считает макросом. Это, конечно, не так.
С операторами он учит обращаться чересчур вольно (в какой момент такое уже не распутать?):
(a != 0)
?(x = -b/a, cout << x)
:((b == 0)
?(cout << "x любое")
:(cout << "нет решения")
)
;
Хотя заявляется, что будут учить современному C++, какие-то любимые приёмчики автор продолжает использовать. Например, сейчас, чтобы воспользоваться числом π, можно написать std::numbers::pi для типа double и std::numbers::pi_v<float> для типа float. Вместо этого автор считает арккосинус от −1 (double const pi {acos(-1.0)};).
Глава «Никогда так не делайте» кажется весьма показательной. В программировании вообще и в программировании на C++ в частности есть много «никогда так не делайте», про это написаны десятки хороших книг за много десятилетий. Но в этой книге автор предупреждает, что не надо обменивать значения двух переменных с помощью сложения и вычитания (и других «олимпиадных» техник):
int a = 10, b = 3;
a = a + b;
b = a - b;
a = a - b;
В последней трети книги начинается попытка показать, как писать код с помощью STL. Это контейнеры, итераторы, строки (в стиле C и std::string). И тут же — передача массива в функцию по ссылке (не по указателю), что, во-первых, довольно экзотично, во-вторых, всё равно требует задавать размер массива, к тому же его никак нельзя поменять.
Из хорошего — отладочные проверки assert, современные генераторы случайных чисел (но в примерах кода смешивается старая и новая инициализация), initializer_list, функции времени компиляции (constexpr), объяснение UB (неопределённого поведения), лямбда-функции.
Структура книги в целом выглядит последовательной, но на деле, например, место битовых операций или new кажется сомнительным.
Книга завязана на среду Code::Blocks (два приложения из четырёх тоже отведены ей). Что нажимать, что где искать. Автор пишет в одну строчку несколько выражений (statements), жалеет лишний пробел или перенос, путает базовые термины, отвечает на вопросы, которые можно отдать на самостоятельный поиск. От современного C++ здесь очень мало, а то, что есть, довольно бессистемно. Даже C++98 освещён однобоко. Что автор знал, то изложил.
Приложения: список литературы, ресурсы интернета (курс на «Степике», где нет даже указателей; стригущий рекламные деньги за безликие статьи «Метанит»; Википедия, русский Stackoverflow и другие), установка Code::Blocks в разных операционных системах (включая «Альт Образование»), среда Code::Blocks.
Николай Аркадьевич Литвиненко. Технология программирования на C++. Начальный курс
288 страниц. БХВ-Петербург, 2005

Основы, классы, потоки, STL, оконный интерфейс (в Windows). Плохо то, что классам учат на примере Visual C++ («мастер» с окошками).
Приложение: приоритеты операций.
Антон Леонардович Марченко. C++. Бархатный путь
399 страниц. Горячая линия-Телеком, 2005

Путь начинается со сравнения грамматик русского языка и формальных языков, идентификаторов и разных правил. Продраться через эти схемы трудно.
Оператор ::= ОператорОбъявления
::= *****
ОператорОбъявления ::= Объявление
Объявление ::= ОбъявлениеПеременной
::= *****
ОбъявлениеПеременной ::= ОбъявлениеПеременнойОсновногоТипа
::= *****
...
Новичок вряд ли даже поймёт, где начинается первая программа. Каких-то более-менее цельных фрагментов в книге не будет очень долго.
Грамматика языка нужна разработчикам компиляторов, а не новичкам (или даже продолжающим). А разработчики компиляторов возьмут стандарт на языке оригинала.
Приложения: «грамматическая сводка», «контроль типов», «прочие характеристики языков программирования», «алгоритмы преобразования», дополнительный код, преобразования дробной части вещественного числа, элементы теории комплексных чисел (в книге есть класс для представления комплексного числа).
Марина Валентиновна Огнёва, Елена Вячеславовна Кудрина. Программирование на языке C++. Практический курс
335 страниц. Юрайт, 2021 (2017)

Переработка двух стостраничных методичек 2008 года «Основы программирования на языке C++». К основным главам добавили: классы и объекты, наследование, объектно-ориентированную реализацию списков и реализацию списков с помощью «бибилотеки» стандартных шаблонов. Код по сравнению с прошлым изданием немного причесали, но проблем по-прежнему много.
Книга формальная. С ошибками, скажем, не везде освобождается память (пример перекочевал полностью из старой версии, среди прочего — транслит и строка вместо символа).
#include <iostream>
using namespace std;
void print (int *mas, int n)
{
for (int i = 0; i < n; i++)
cout << mas[i] << "\t";
print(a, 10);
return 0;
}
Где-то насыпали новых ошибок. К примеру, директивы препроцессора не являются выражениями (statements), они не требуют точки с запятой, что бы там ни писали авторы.
#include < имя_заголовочного_файла >;
Приложения: Visual Studio, ошибки, возникающие при разработке программ, операции, математические функции.
Павел Алексеевич Орленко, Пётр Валентинович Евдокимов. C++ на примерах. Практика, практика и только практика
288 страниц. Наука и Техника, 2019

Среда Dev C++, int polovnik; и скриншоты консоли. Если код отформатировать, то получится нормальное введение для первокурсников.
После знакомства с классами сразу пишут небольшое клиент-серверное приложение на сокетах. Затем идут бинарный поиск и некоторые алгоритмы сортировки (на примере линейных списков).
Приложения: заголовочные файлы стандартной библиотеки (контейнеры, алгоритмы, строки, математика, исключения, границы диапазонов, <new> и RTTI).