Язык программирования C++. Лекции и упражнения
Стивен Прата
Эта книга представляет собой тщательно проверенный, качественно составленный и один из лучших учебников по языку программирования C++ для программистов и разработчиков. Эта классическая книга по C++ обучает принципам программирования, среди которых структурированный код и нисходящее проектирование, а также использованию классов, наследования, шаблонов, исключений, лямбда-выражений, интеллектуальных указателей и семантики переноса.
Автор и преподаватель Стивен Прата создал поучительное, ясное и строгое введение в C++. Фундаментальные концепции программирования излагаются вместе с подробными сведениями о языке C++. Множество коротких практических примеров иллюстрируют одну или две концепции за раз, стимулируя читателей осваивать новые темы за счет непосредственной их проверки на практике.
Вопросы для самоконтроля и упражнения по программированию, предлагаемые в конце каждой главы, помогут читателям сосредоточиться на самой критически важной информации и систематизировать наиболее сложные концепции.
Написанное в дружественном стиле, простое в освоении руководство для самостоятельного изучения подойдет как студентам, обучающимся программированию, так и разработчикам, имеющим дело с другими языками и стремящимся лучше понять фундаментальные основы этого ключевого языка программирования.
Шестое издание этой книги обновлено и расширено с учетом последних тенденций в разработке на C++, а также для детального отражения нового стандарта языка C++11.
Эта книга отличается следующими особенностями:
- Всеобъемлющее обсуждение классического языка C и дополнительных средств языка C++.
- Строгое и ясное руководство по использованию каждой функциональной возможности.
- Практическое обучение на кратких и простых примерах, которые развивают понимание одной или двух концепций за раз.
- Сотни полезных примеров программ.
- Вопросы для самоконтроля и упражнения по программированию, приводимые в конце каждой главы для самостоятельной проверки степени усвоения материала.
- Освещение обобщенного языка C++ предоставляет максимально возможную гибкость.
- Обучение стандарту ISO, включая обсуждение шаблонов, стандартной библиотеки шаблонов (STL), класса string, исключений, RTTI и пространств имен.
Издательство: Вильямс, 2012 г.
ISBN 978-5-8459-1778-2
Количество страниц: 1248.
Содержание книги «Язык программирования C++. Лекции и упражнения»:
- 20 Благодарности
- 22 Об авторе
- 22 От издательства
- 23 Введение
- 23 Принятый подход
- 24 Примеры кода, используемые в книге
- 24 Организация книги
- 28 Примечание для преподавателей
- 29 Соглашения, используемые в этой книге
- 30 Системы, на которых разрабатывались примеры для книги
- 31 Глава 1. Начало работы с C++
- 32 Изучение языка C++: с чем придется иметь дело
- 33 Истоки языка C++: немного истории
- 33 Язык программирования C
- 34 Философия программирования на языке C
- 35 Переход к C++: объектно-ориентированное программирование
- 37 C++ и обобщенное программирование
- 37 Происхождение языка программирования C++
- 38 Переносимость и стандарты
- 41 Развитие языка
- 41 Эта книга и стандарты C++
- 41 Порядок создания программы
- 42 Создание файла исходного кода
- 43 Компиляция и компоновка
- 44 Компиляция и связывание в Unix
- 45 Компиляция и связывание в Linux
- 45 Компиляторы командной строки для режима командной строки Windows
- 46 Компиляторы для Windows
- 48 C++ в Macintosh
- 48 Резюме
- 49 Глава 2. Приступаем к изучению C++
- 50 Первые шаги в C++
- 51 Возможности функции main()
- 52 Заголовок функции как интерфейс
- 54 Почему функции main() нельзя назначать другое имя
- 54 Комментарии в языке C++
- 55 Препроцессор C++ и файл iostream
- 56 Имена заголовочных файлов
- 57 Пространства имен
- 58 Вывод в C++ с помощью cout
- 60 Манипулятор endl
- 60 Символ новой строки
- 61 Форматирование исходного кода C++
- 61 Лексемы и пробельные символы в исходном коде
- 62 Стиль написания исходного кода C++
- 63 Операторы в языке C++
- 63 Операторы объявления и переменные
- 65 Операторы присваивания
- 66 Новый трюк с объектом cout
- 67 Другие операторы C++
- 67 Использование cin
- 68 Конкатенация с помощью cout
- 68 cin и cout: признак класса
- 70 Функции
- 70 Использование функции, имеющей возвращаемое значение
- 74 Разновидности функций
- 75 Функции, определяемые пользователем
- 78 Использование определяемых пользователем функций, имеющих возвращаемое значение
- 80 Местоположение директивы using в программах с множеством функций
- 81 Резюме
- 82 Вопросы для самоконтроля
- 83 Упражнения по программированию
- 85 Глава 3. Работа с данными
- 86 Простые переменные
- 87 Имена, назначаемые переменным
- 88 Целочисленные типы
- 89 Целочисленные типы short, int, long и long long
- 94 Типы без знаков
- 96 Выбор целочисленного типа
- 97 Целочисленные литералы
- 99 Определение компилятором C++ типа константы
- 100 Тип char: символы и короткие целые числа
- 109 Тип bool
- 109 Квалификатор const
- 111 Числа с плавающей точкой
- 111 Запись чисел с плавающей точкой
- 112 Типы чисел с плавающей точкой
- 114 Константы с плавающей точкой
- 115 Преимущества и недостатки чисел с плавающей точкой
- 116 Арифметические операции в C++
- 117 Порядок выполнения операций: приоритеты операций и ассоциативность
- 119 Операция нахождения остатка от деления
- 120 Преобразования типов
- 126 Объявления auto в C++11
- 127 Резюме
- 128 Вопросы для самоконтроля
- 129 Упражнения по программированию
- 86 Простые переменные
- 131 Глава 4. Составные типы
- 132 Введение в массивы
- 134 Замечания по программе
- 135 Правила инициализации массивов
- 136 Инициализация массивов в C++11
- 136 Строки
- 138 Конкатенация строковых литералов
- 138 Использование строк в массивах
- 140 Риски, связанные с вводом строк
- 141 Построчное чтение ввода
- 145 Смешивание строкового и числового ввода
- 146 Введение в класс string
- 148 Инициализация строк в C++11
- 153 Другие формы строковых литералов
- 154 Введение в структуры
- 155 Использование структур в программах
- 158 Инициализация структур в C++11
- 158 Может ли структура содержать член типа string?
- 158 Прочие свойства структур
- 160 Массивы структур
- 161 Битовые поля в структурах
- 162 Объединения
- 163 Перечисления
- 165 Установка значений перечислителей
- 165 Диапазоны значений перечислителей
- 166 Указатели и свободное хранилище
- 169 Объявление и инициализация указателей
- 171 Опасность, связанная с указателями
- 172 Указатели и числа
- 172 Выделение памяти с помощью операции new
- 175 Освобождение памяти с помощью операции delete
- 176 Использование операции new для создания динамических массивов
- 179 Указатели, массивы и арифметика указателей
- 180 Замечания по программе
- 184 Указатели и строки
- 189 Использование операции new для создания динамических структур
- 192 Автоматическое, статическое и динамическое хранилище
- 194 Комбинации типов
- 196 Альтернативы массивам
- 196 Шаблонный класс vector
- 197 Шаблонный класс array (C++11)
- 198 Сравнение массивов, объектов vector и объектов array
- 199 Резюме
- 201 Вопросы для самоконтроля
- 202 Упражнения по программированию
- 132 Введение в массивы
- 205 Глава 5. Циклы и выражения отношений
- 206 Введение в циклы for
- 207 Части цикла for
- 213 Возврат к циклу for
- 214 Изменение шага цикла
- 215 Доступ внутрь строк с помощью цикла for
- 9 Операции инкремента и декремента 216 Содержание
- 217 Побочные эффекты и точки следования
- 218 Сравнение префиксной и постфиксной форм
- 219 Операции инкремента и декремента и указатели
- 220 Комбинация операций присваивания
- 221 Составные операторы, или блоки
- 222 Дополнительные синтаксические трюки — операция запятой
- 225 Выражения отношений
- 226 Присваивание, сравнение и вероятные ошибки
- 228 Сравнение строк в стиле C
- 230 Сравнение строк класса string
- 231 Цикл while
- 233 Замечания по программе
- 234 Сравнение циклов for и while
- 235 Построение цикла задержки
- 237 Цикл do while
- 239 Цикл for, основанный на диапазоне (C++11)
- 240 Циклы и текстовый ввод
- 240 Применение для ввода простого cin
- 242 Спасение в виде cin.get(char)
- 243 Выбор используемой версии cin.get()
- 243 Условие конца файла
- 246 Еще одна версия cin.get()
- 250 Вложенные циклы и двумерные массивы
- 251 Инициализация двумерного массива
- 252 Использование двумерного массива
- 253 Резюме
- 254 Вопросы для самоконтроля
- 255 Упражнения по программированию
- 206 Введение в циклы for
- 257 Глава 6. Операторы ветвления и логические операции
- 258 Оператор if
- 259 Оператор if else
- 261 Форматирование операторов if else
- 262 Конструкция if else if else
- 264 Логические выражения
- 264 Логическая операция «ИЛИ»: ||
- 265 Логическая операция «И»: &&
- 270 Логическая операция «НЕ»: !
- 271 Факты, связанные с логическими операциями
- 272 Альтернативные представления
- 272 Библиотека символьных функций cctype
- 275 Операция ?
- 276 Оператор switch
- 279 Использование перечислителей в качестве меток
- 280 Операторы switch и if else
- 281 Операторы break и continue
- 282 Замечания по программе
- 283 Циклы для чтения чисел
- 286 Замечания по программе
- 287 Простой файловый ввод-вывод
- 287 Текстовый ввод-вывод и текстовые файлы
- 288 Запись в текстовый файл
- 292 Чтение текстового файла
- 297 Резюме
- 298 Вопросы для самоконтроля
- 300 Упражнения по программированию
- 258 Оператор if
- 303 Глава 7. Функции как программные модули C++
- 304 Обзор функций
- 305 Определение функции
- 307 Прототипирование и вызов функции
- 310 Аргументы функций и передача по значению
- 312 Множественные аргументы
- 314 Еще одна функция с двумя аргументами
- 316 Функции и массивы
- 318 Как указатели позволяют функциям обрабатывать массивы
- 318 Последствия использования массивов в качестве аргументов
- 321 Дополнительные примеры функций для работы с массивами
- 327 Функции, работающие с диапазонами массивов
- 329 Указатели и const
- 332 Функции и двумерные массивы
- 333 Функции и строки в стиле C
- 334 Функции с аргументами — строками в стиле C
- 335 Функции, возвращающие строки в стиле C
- 337 Функции и структуры
- 337 Передача и возврат структур
- 339 Еще один пример использования функций со структурами
- 344 Передача адресов структур
- 346 Функции и объекты класса string
- 347 Функции и объекты array
- 349 Замечания по программе
- 349 Рекурсия
- 349 Рекурсия с одиночным рекурсивным вызовом
- 351 Рекурсия с множественными рекурсивными вызовами
- 352 Указатели на функции
- 353 Основы указателей на функции
- 355 Пример с указателем на функцию
- 356 Вариации на тему указателей на функции
- 360 Упрощение объявлений с помощью typedef
- 361 Резюме
- 362 Вопросы для самоконтроля
- 363 Упражнения по программированию
- 304 Обзор функций
- 367 Глава 8. Дополнительные сведения о функциях
- 368 Встроенные функции C++
- 371 Ссылочные переменные
- 371 Создание ссылочных переменных
- 374 Ссылки как параметры функций
- 377 Свойства и особенности ссылок
- 379 Временные переменные, ссылочные аргументы и квалификатор const
- 381 Использование ссылок при работе со структурами
- 388 Использование ссылок на объект класса
- 391 Еще один урок ООП: объекты, наследование и ссылки
- 394 Когда целесообразно использовать ссылочные аргументы
- 395 Аргументы по умолчанию
- 398 Перегрузка функций
- 400 Пример перегрузки
- 403 Когда целесообразно использовать перегрузку функций
- 404 Шаблоны функций
- 407 Перегруженные шаблоны
- 408 Ограничения шаблонов
- 409 Явные специализации
- 412 Создание экземпляров и специализация
- 414 Какую версию функции выбирает компилятор?
- 421 Эволюция шаблонных функций
- 424 Резюме
- 425 Вопросы для самоконтроля
- 426 Упражнения по программированию
- 429 Глава 9. Модели памяти и пространства имен
- 430 Раздельная компиляция
- 435 Продолжительность хранения, область видимости и компоновка
- 436 Область видимости и связывание
- 437 Автоматическая продолжительность хранения
- 442 Переменные со статической продолжительностью хранения
- 452 Спецификаторы и классификаторы
- 455 Функции и связывание
- 456 Языковое связывание
- 457 Схемы хранения и динамическое выделение памяти
- 458 Инициализация с помощью операции new
- 458 Когда new дает сбой
- 458 new: операции, функции и заменяющие функции
- 459 Операция new с размещением
- 463 Пространства имен
- 463 Традиционные пространства имен C++
- 465 Новое средство пространств имен
- 472 Пример пространства имен
- 475 Пространства имен и будущее
- 476 Резюме
- 477 Вопросы для самоконтроля
- 479 Упражнения по программированию
- 483 Глава 10. Объекты и классы
- 484 Процедурное и объектно-ориентированное программирование
- 485 Абстракции и классы
- 486 Что такое тип?
- 486 Классы в C++
- 492 Реализация функций-членов класса
- 496 Использование классов
- 498 Изменение реализации
- 499 Обзор ситуации на текущий момент
- 500 Конструкторы и деструкторы классов
- 505 Усовершенствование класса Stock
- 513 Обзор конструкторов и деструкторов
- 514 Изучение объектов: указатель this
- 520 Массив объектов
- 522 Область видимости класса
- 526 Абстрактные типы данных
- 530 Резюме
- 531 Вопросы для самоконтроля
- 531 Упражнения по программированию
- 535 Глава 11. Работа с классами
- 537 Перегрузка операций
- 538 Время в наших руках: разработка примера перегрузки операции
- 540 Добавление операции сложения
- 543 Ограничения перегрузки
- 545 Дополнительные перегруженные операции
- 547 Что такое друзья?
- 549 Создание друзей
- 550 Общий вид друга: перегрузка операции <<
- 556 Перегруженные операции: сравнение функций-членов и функций, не являющихся членами
- 557 Дополнительные сведения о перегрузке: класс Vector
- 564 Использование члена, хранящего состояние
- 566 Перегрузка арифметических операций для класса Vector
- 568 Комментарии к реализации
- 569 Использование класса Vector при решении задачи случайного блуждания
- 572 Автоматические преобразования и приведения типов в классах
- 583 Преобразования и друзья
- 585 Резюме
- 587 Вопросы для самоконтроля
- 587 Упражнения по программированию
- 591 Глава 12. Классы и динамическое выделение памяти
- 592 Динамическая память и классы
- 592 Простой пример и статические члены класса
- 601 Специальные функции-члены
- 609 Новый усовершенствованный класс String
- 619 О чем следует помнить при использовании операции new в конструкторах
- 622 Замечания о возвращаемых объектах
- 625 Использование указателей на объекты
- 634 Обзор технических приемов
- 635 Моделирование очереди
- 636 Класс Queue
- 646 Класс Customer
- 649 Моделирование работы банкомата
- 653 Резюме
- 655 Вопросы для самоконтроля
- 656 Упражнения по программированию
- 592 Динамическая память и классы
- 659 Глава 13. Наследование классов
- 661 Начало: простой базовый класс
- 663 Порождение класса
- 664 Конструкторы: варианты доступа
- 667 Использование производного класса
- 669 Особые отношения между производным и базовым классами
- 671 Наследование: отношение «является»
- 673 Полиморфное открытое наследование
- 674 Разработка классов Brass и BrassPlus
- 685 Статическое и динамическое связывание
- 685 Совместимость типов указателей и ссылок
- 687 Виртуальные функции-члены и динамическое связывание
- 690 Что следует знать о виртуальных методах
- 693 Управление доступом: protected
- 694 Абстрактные базовые классы
- 697 Применение концепции абстрактных базовых классов
- 702 Философия АБК
- 703 Наследование и динамическое выделение памяти
- 703 Случай 1: производный класс не использует операцию new
- 704 Случай 2: производный класс использует операцию new
- 706 Пример наследования с динамическим выделением памяти и дружественными функциями
- 711 Обзор структуры класса
- 711 Функции-члены, генерируемые компилятором
- 713 Другие соображения относительно методов класса
- 716 Соображения по поводу открытого наследования
- 720 Сводка функций классов
- 721 Резюме
- 721 Вопросы для самоконтроля
- 723 Упражнения по программированию
- 661 Начало: простой базовый класс
- 727 Глава 14. Повторное использование кода в C++
- 728 Классы с объектами-членами
- 729 Класс valarray: краткий обзор
- 730 Проект класса Student
- 731 Пример класса Student
- 738 Закрытое наследование
- 738 Новый вариант класса Student
- 745 Включение или закрытое наследование?
- 746 Защищенное наследование
- 746 Переопределение доступа с помощью using
- 748 Множественное наследование
- 764 Краткий обзор множественного наследования
- 765 Шаблоны классов
- 766 Определение шаблона класса
- 771 Более внимательный взгляд на шаблонные классы
- 776 Пример шаблона массива и нетипизированные аргументы
- 778 Универсальность шаблонов
- 781 Специализации шаблона
- 784 Шаблоны-члены
- 788 Шаблонные классы и друзья
- 795 Резюме
- 797 Вопросы для самоконтроля
- 799 Упражнения по программированию
- 728 Классы с объектами-членами
- 805 Глава 15. Друзья, исключения и многое другое
- 806 Друзья
- 806 Дружественные классы
- 811 Дружественные функции-члены
- 813 Другие дружественные отношения
- 815 Вложенные классы
- 817 Вложенные классы и доступ
- 818 Вложение в шаблонах
- 821 Исключения
- 822 Вызов abort()
- 823 Возврат кода ошибки
- 825 Механизм исключений
- 827 Использование объектов в качестве исключений
- 831 Спецификации исключений в C++11
- 832 Раскручивание стека
- 837 Дополнительные свойства исключений
- 839 Класс exception
- 843 Исключения, классы и наследование
- 847 Потеря исключений
- 850 Предостережения относительно использования исключений
- 852 Динамическая идентификация типов
- 852 Для чего нужен механизм RTTI
- 852 Как работает механизм RTTI
- 853 Операция dynamic_cast
- 860 Операции приведения типов
- 863 Резюме
- 864 Вопросы для самоконтроля
- 865 Упражнения по программированию
- 806 Друзья
- 867 Глава 16. Класс string и стандартная библиотека шаблонов
- 868 Класс string
- 868 Создание объекта string
- 872 Ввод для класса string
- 875 Работа со строками
- 880 Другие возможности, предлагаемые классом string
- 881 Разновидности строк
- 882 Классы шаблонов интеллектуальных указателей
- 883 Использование интеллектуальных указателей
- 886 Соображения по поводу интеллектуальных указателей
- 890 Выбор интеллектуального указателя
- 892 Стандартная библиотека шаблонов (STL)
- 892 Класс шаблона vector
- 894 Что еще можно делать с помощью векторов
- 899 Дополнительные возможности векторов
- 903 Цикл for, основанный на диапазоне (C++11)
- 903 Обобщенное программирование
- 904 Предназначение итераторов
- 908 Виды итераторов
- 911 Иерархия итераторов
- 912 Концепции, уточнения и модели
- 918 Виды контейнеров
- 929 Ассоциативные контейнеры
- 935 Неупорядоченные ассоциативные контейнеры (C++11)
- 936 Функциональные объекты (функторы)
- 937 Концепции функторов
- 939 Предопределенные функторы
- 941 Адаптируемые функторы и функциональные адаптеры
- 943 Алгоритмы
- 944 Группы алгоритмов
- 944 Основные свойства алгоритмов
- 946 Библиотека STL и класс string
- 947 Сравнение функций и методов контейнеров
- 949 Использование STL
- 957 Шаблон initializer_list (C++11)
- 960 Замечания по программе
- 960 Резюме
- 962 Вопросы для самоконтроля
- 963 Упражнения по программированию
- 868 Класс string
- 967 Глава 17. Ввод, вывод и файлы
- 968 Обзор ввода и вывода в C++
- 969 Потоки и буферы
- 971 Потоки, буферы и файл iostream
- 973 Перенаправление
- 975 Вывод с помощью cout
- 975 Перегруженная операция <<
- 977 Другие методы ostream
- 980 Очистка выходного буфера
- 981 Форматирование с помощью cout
- 996 Ввод с помощью cin
- 998 Восприятие ввода операцией cin >>
- 1000 Состояния потока
- 1004 Другие методы класса istream
- 1011 Другие методы класса istream
- 1015 Файловый ввод и вывод
- 1016 Простой файловый ввод-вывод
- 1019 Проверка потока и is_open()
- 1020 Открытие нескольких файлов
- 1020 Обработка командной строки
- 1022 Режимы файла
- 1032 Произвольный доступ
- 1040 Внутреннее форматирование
- 1042 Резюме
- 1044 Вопросы для самопроверки
- 1045 Упражнения по программированию
- 968 Обзор ввода и вывода в C++
- 1049 Глава 18. Новый стандарт C++
- 1050 Обзор уже известных функциональных средств C++11
- 1050 Новые типы
- 1050 Унифицированная инициализация
- 1052 Объявления
- 1054 nullptr
- 1054 Интеллектуальные указатели
- 1054 Изменения в спецификации исключений
- 1054 Перечисления с областью видимости
- 1055 Изменения в классах
- 1056 Изменения в шаблонах и STL
- 1058 Ссылка rvalue
- 1059 Семантика переноса и ссылка rvalue
- 1059 Необходимость в семантике переноса
- 1061 Пример семантики переноса
- 1065 Исследование конструктора переноса
- 1067 Присваивание
- 1067 Принудительное применение переноса
- 1071 Новые возможности классов
- 1071 Специальные функции-члены
- 1072 Явно заданные по умолчанию и удаленные методы
- 1074 Делегирование конструкторов
- 1074 Наследование конструкторов
- 1076 Управление виртуальными методами: override и final
- 1077 Лямбда-функции
- 1077 Как работают указатели на функции, функторы и лямбда
- 1081 Более подробно о лямбда-функциях
- 1083 Оболочки
- 1084 Оболочка function и неэффективность шаблонов
- 1086 Решение проблемы
- 1087 Дополнительные возможности
- 1088 Шаблоны с переменным числом аргументов
- 1089 Пакеты параметров шаблонов и функций
- 1090 Распаковка пакетов
- Использование рекурсии в шаблонных функциях с переменным
- 1090 числом аргументов
- 1093 Другие средства C++11
- 1093 Параллельное программирование
- 1094 Библиотечные дополнения
- 1094 Низкоуровневое программирование
- 1095 Смешанные средства
- 1096 Языковые изменения
- 1096 Проект Boost
- 1097 Проект TR1
- 1097 Использование Boost
- 1098 Что дальше?
- 1099 Резюме
- 1100 Вопросы для самоконтроля
- 1102 Упражнения по программированию
- 1050 Обзор уже известных функциональных средств C++11
- 1105 Приложение А. Основания систем счисления
- 1105 Десятичные числа (основание 10)
- 1106 Восьмеричные целые числа (основание 8)
- 1106 Шестнадцатеричные числа (основание 16)
- 1107 Двоичные числа (основание 2)
- 1107 Двоичная и шестнадцатеричная формы записи
- 1109 Приложение Б. Зарезервированные слова C++
- 1109 Ключевые слова С++
- 1110 Альтернативные лексемы
- 1110 Зарезервированные имена библиотеки С++
- 1111 Идентификаторы со специальным назначением
- 1113 Приложение В. Набор символов ASCII
- 1119 Приложение Г. Приоритеты операций
- 1123 Приложение Д. Другие операции
- 1123 Битовые операции
- 1123 Операции сдвига
- 1125 Логические битовые операции
- 1127 Альтернативные представления битовых операций
- 1128 Примеры использования битовых операций
- 1129 Операции разыменования членов
- 1133 alignof (C++11)
- 1134 noexcept (C++11)
- 1123 Битовые операции
- 1135 Приложение Е. Шаблонный класс string
- 1136 Тринадцать типов и константа
- 1137 Информация о данных, конструкторы и вспомогательные элементы
- 1139 Конструктор по умолчанию
- 1140 Конструкторы, использующие строки в стиле C
- 1140 Конструкторы, использующие часть строки в стиле C
- 1140 Конструкторы, использующие ссылку lvalue
- 1142 Конструкторы, использующие ссылку rvalue (C++11)
- 1142 Конструктор, использующий n копий символа
- 1142 Конструктор, использующий диапазон
- 1143 Конструктор, использующий список инициализаторов (C++11)
- 1143 Различные действия с памятью
- 1143 Доступ к строке
- 1145 Базовое присваивание
- 1145 Поиск в строках
- 1145 Семейство find()
- 1146 Семейство rfind()
- 1147 Семейство find_first_of()
- 1147 Семейство find_last_of()
- 1147 Семейство find_first_not_of()
- 1148 Семейство find_last_not_of()
- 1148 Методы и функции сравнения
- 1149 Модификация строк
- 1150 Методы присоединения и добавления
- 1150 Дополнительные методы присваивания
- 1151 Методы вставки
- 1152 Методы очистки
- 1152 Методы замены
- 1153 Другие методы модификации: copy() и swap()
- 1153 Ввод и вывод
- 1155 Приложение Ж. Методы и функции стандартной библиотеки шаблонов
- 1155 Библиотека STL и C++11
- 1155 Новые контейнеры
- 1156 Изменения в контейнерах C++98
- 1157 Члены, общие для всех или большинства контейнеров
- 1160 Дополнительные члены для контейнеров последовательностей
- 1164 Дополнительные операции для множеств и карт
- 1166 Неупорядоченные ассоциативные контейнеры (C++11)
- 1168 Функции библиотеки STL
- 1169 Операции, не модифицирующие последовательности
- 1174 Операции, видоизменяющие последовательности
- 1184 Операции сортировки и связанные с ними операции
- 1197 Числовые операции
- 1155 Библиотека STL и C++11
- 1201 Приложение З. Рекомендуемая литература и ресурсы в Интернете
- 1201 Рекомендуемая литература
- 1203 Ресурсы в Интернете
- 1205 Приложение И. Переход к стандарту ANSI/ISO C++
- 1205 Используйте альтернативы для некоторых директив препроцессора
- 1205 Используйте const вместо #define для определения констант
- 1207 Используйте inline вместо #define для определения коротких функций
- 1208 Используйте прототипы функций
- 1208 Используйте приведения типов
- 1209 Знакомьтесь с функциональными возможностями C++
- 1209 Используйте новую организацию заголовочных файлов
- 1209 Используйте пространства имен
- 1211 Используйте интеллектуальные указатели
- 1211 Используйте класс string
- 1211 Используйте библиотеку STL
- 1205 Используйте альтернативы для некоторых директив препроцессора
- 1213 Приложение К. Ответы на вопросы для самоконтроля
- 1213 Глава 2
- 1214 Глава 3
- 1215 Глава 4
- 1217 Глава 5
- 1218 Глава 6
- 1219 Глава 7
- 1221 Глава 8
- 1223 Глава 9
- 1225 Глава 10
- 1227 Глава 11
- 1228 Глава 12
- 1230 Глава 13
- 1232 Глава 14
- 1233 Глава 15
- 1234 Глава 16
- 1236 Глава 17
- 1237 Глава 18
- 1240 Предметный указатель
Инструкция как скачать книгу Стивен Прата: Язык программирования C++. Лекции и упражнения в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.