Язык программирования 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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 Упражнения по программированию
  • 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)
  • 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 Числовые операции
  • 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
  • 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 совершенно бесплатно.
Язык программирования C++. Лекции и упражнения
Рейтинг книги:
0 голосов
1127

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: