C++. Мастер-класс в задачах и примерах - Книга разбита на две основные части: задачи и решения. Рассматриваются базовые конструкции языка С++, тонкие моменты низкоуровневых операций, объектно-ориентированное программирование, разработка приложений при помощи стандартной библиотеки шаблонов STL, а также прикладные задачи. Особенностью предлагаемых задач и их решений является независимость от платформы и среды программирования, поэтому книга будет интересна как UNIX-, так и Windows-программистам.
Название: C++. Мастер-класс в задачах и примерах Автор: Максим Кузнецов, Игорь Симдянов Издательство: БХВ-Петербург Год: 2008 Страниц: 478 Формат: PDF Размер: 3,72 МБ ISBN: 978-5-94157-953-2 Качество: Отличное Язык: Русский
Содержание:
Введение Для кого предназначена книга? Часть I. Задачи по основам языка Глава I.1. Базовые конструкции языка I.1.1. Включение заголовочных файлов I.1.2. Сколько байтов занимает каждый из базовых типов? I.1.3. Сколько байтов занимает тип void? I.1.4. Равны ли числа? I.1.5. Результат сравнения? I.1.6. Сравнение инкремента и постинкремента I.1.7. Четное или нечетное? I.1.8. Имя программы I.1.9. Чем отличается switch от конструкции if-else-if? I.1.10. Вывод случайного числа символов I.1.11. Вывод четных чисел I.1.12. Вывод всех видимых ASCII-символов I.1.13. Поиск простых чисел I.1.14. Упаковка цикла for I.1.15. Преобразование десятичного числа в двоичное I.1.16. Преобразование двоичного числа в десятичное I.1.17. Преобразование десятичного числа в восьмеричное I.1.18. Преобразование восьмеричного числа в десятичное I.1.19. Преобразование десятичного числа в шестнадцатеричное I.1.20. Преобразование шестнадцатеричного числа в десятичное I.1.21. Исключающее ИЛИ I.1.22. Возведение числа в степень I.1.23. Смена знака числа I.1.24. Изменение регистра строки I.1.25. Глобальные переменные I.1.26. Статическая глобальная переменная I.1.27. Оператор «запятая» I.1.28. Использование структур и перечислений I.1.29. Объединение и битовые поля I.1.30. Преобразование арабского числа в римское Глава I.2. Указатели, ссылки, массивы, строки I.2.1. Укоротить строку I.2.2. Объявление строки I.2.3. Размер строки I.2.4. Количество элементов массива I.2.5. Увеличение размера строки I.2.6. Чередование символов строки и пробелов I.2.7. Сравнение строк I.2.8. Упаковка IP-адреса I.2.9. Адрес переменной I.2.10. Обход массива при помощи указателей I.2.11. Получение старшего и младшего разрядов I.2.12. Новый тип I.2.13. Блочный вывод строки I.2.14. Разбивка строки по пробелу I.2.15. Найдите ошибку I.2.16. Допустимо ли выражение ****k=56? I.2.17. Массив строк I.2.18. Динамический массив I.2.19. Динамический многомерный массив I.2.20. Заполнение элементов массива I.2.21. Чем отличается int * const от int const *? I.2.22. Отличие ссылки от указателя I.2.23. Указатель и ссылка на структуру I.2.24. Указатель на структуру I.2.25. Использование структур для хранения строк I.2.26. Односвязный список Глава I.3. Функции I.3.1. Подсчет числа вызовов функции I.3.2. Подсчет среднего значения I.3.3. Обработка одномерного массива в функции I.3.4. Указатель на последний элемент массива I.3.5. Функция обмена значений двух переменных I.3.6. Рекурсивный вызов I.3.7. Переменная сумма I.3.8. Допустимо ли выражение f() = 10.0? I.3.9. Предотвращение выхода за границы массива I.3.10. Вывод строки в стандартный поток I.3.11. Функции abs(), labs() и fabs() I.3.12. Ошибка в перегрузке функции I.3.13. Функция с переменным количеством параметров I.3.14. Указатель на функцию I.3.15. Обработка функцией элементов массива I.3.16. Односвязный список I.3.17. Двухсвязный список I.3.18. Создание файла с уникальным именем I.3.19. Количество строк в файле I.3.20. Вывод случайной строки из файла I.3.21. Вывод трех случайных строк файла I.3.22. Последние три строки файла I.3.23. Поиск строки в файле I.3.24. Самая длинная и самая короткая строка в файле I.3.25. Список слов заданной длины I.3.26. Поиск слов по первым символам I.3.27. Изменение порядка следования строк в файле I.3.28. Разбиение файла на части I.3.29. Шаблоны функций I.3.30. Перегрузка шаблона функций Глава I.4. Объекты и классы I.4.1. Чем отличается структура struct от класса class? I.4.2. Чем отличается объединение union от класса class? I.4.3. Константы в классах I.4.4. Подсчет количества созданных объектов I.4.5. Найдите ошибку I.4.6. Использование объекта в нескольких файлах I.4.7. Инициализация объекта при помощи = I.4.8. Класс с динамическим массивом I.4.9. Класс-интерфейс к файлу I.4.10. Постраничная навигация I.4.11. Алфавитная навигация I.4.12. Дружественная функция I.4.13. Блокировка файла по статическому члену класса I.4.14. Блокировка файла двумя классами I.4.15. Копирующий конструктор I.4.16. Перегрузка оператора = I.4.17. Перегрузка логических операторов I.4.18. Перегрузка операторов +, -, / и * I.4.19. Перегрузка операторов ++ и - I.4.20. Перегрузка оператора [] I.4.21. Перегрузка оператора () I.4.22. Наследование одного класса другим I.4.23. Расширение функциональности класса I.4.24. Перегрузка метода базового класса I.4.25. Виртуальный класс I.4.26. Указатель на объект базового типа I.4.27. Чем отличается виртуальная функция от чисто виртуальной функции? I.4.28. Динамическая идентификация типов I.4.29. Приведение типов I.4.30. Обобщенный класс безопасного массива I.4.31. Использование параметров в шаблонах классов I.4.32. Перегрузка шаблонов I.4.33. Обобщенный двухсвязный список Глава I.5. Исключения I.5.1. Генерация исключений I.5.2. Перехват исключений в иерархии классов I.5.3. Перехват всех исключений I.5.4. Функция, генерирующая исключение I.5.5. Выделение динамической памяти I.5.6. Перегрузка операторов new и delete Глава I.6. Стандартная библиотека I.6.1. Стандартное пространство имен I.6.2. Класс auto_ptr I.6.3. Присваивание и класс auto_ptr I.6.4. Какие типы контейнеров поддерживаются в STL? I.6.5. Работа с вектором I.6.6. Работа с деком I.6.7. Работа со списком I.6.8. Работа с множеством I.6.9. Работа с отображением I.6.10. Преобразование одной коллекции в другую I.6.11. Допускается ли сравнение коллекций друг с другом? I.6.12. Сортировка строк I.6.13. Поиск максимального и минимального значений коллекции I.6.14. Обращение порядка следования элементов I.6.15. Сортировка содержимого файла I.6.16. Создание копии коллекции I.6.17. Удаление элементов коллекции I.6.18. Вывод содержимого произвольной коллекции I.6.19. Преобразование коллекции при копировании I.6.20. Что такое предикат? I.6.21. Что такое объект-функция? I.6.22. В чем особенность контейнера vector<bool>? Глава I.7. Ввод/вывод I.7.1. Что такое поток? I.7.2. Выравнивание строк по правому краю I.7.3. Выравнивание строк по правому и левому краям I.7.4. Ввод строк пользователем I.7.5. Перегрузка операторов >> и << I.7.6. Собственный манипулятор Глава I.8. Разное I.8.1. Кривая Безье I.8.2. Преобразование строк в массив I.8.3. Разгрузка баржи I.8.4. Длительность жизни ученого I.8.5. Выгода предпринимателя Часть II. Ответы Глава II.1. Базовые конструкции языка II.1.1. Включение заголовочных файлов II.1.2. Сколько байтов занимает каждый из базовых типов? II.1.3. Сколько байтов занимает тип void? II.1.4. Равны ли числа? II.1.5. Результат сравнения II.1.6. Сравнение инкремента и постинкремента II.1.7. Четное или нечетное? II.1.8. Имя программы II.1.9. Чем отличается switch от конструкции if-else-if? II.1.10. Вывод случайного числа символов II.1.11. Вывод четных чисел II.1.12. Вывод всех видимых ASCII-символов II.1.13. Поиск простых чисел II.1.14. Упаковка цикла for II.1.15. Преобразование десятичного числа в двоичное II.1.16. Преобразование двоичного числа в десятичное II.1.17. Преобразование десятичного числа в восьмеричное II.1.18. Преобразование восьмеричного числа в десятичное II.1.19. Преобразование десятичного числа в шестнадцатеричное II.1.20. Преобразование шестнадцатеричного числа в десятичное II.1.21. Исключающее ИЛИ II.1.22. Возведение числа в степень II.1.23. Смена знака числа II.1.24. Изменение регистра символов строки II.1.25. Глобальные переменные II.1.26. Статическая глобальная переменная II.1.27. Оператор «запятая» II.1.28. Использование структур и перечислений II.1.29. Объединение и битовые поля II.1.30. Преобразование арабского числа в римское Глава II.2. Указатели, ссылки, массивы, строки II.2.1.0 Укоротить строку II.2.2.0 Объявление строки II.2.3.0 Размер строки II.2.4.0 Количество элементов массива II.2.5.0 Увеличение размера строки II.2.6.0 Чередование символов строки и пробелов II.2.7.0 Сравнение строк II.2.8.0 Упаковка IP-адреса II.2.9.0 Адрес переменной II.2.10. Обход массива при помощи указателей II.2.11. Получение старшего и младшего разрядов II.2.12. Новый тип II.2.13. Блочный вывод строки II.2.14. Разбивка строки по пробелу II.2.15. Найдите ошибку II.2.16. Допустимо ли выражение ****k=56? II.2.17. Массив строк II.2.18. Динамический массив II.2.19. Динамический многомерный массив II.2.20. Заполнение элементов массива II.2.21. Чем отличается int * const от int const *? II.2.22. Отличие ссылки от указателя II.2.23. Указатель и ссылка на структуру II.2.24. Указатель на структуру II.2.25. Использование структур для хранения строк II.2.26. Односвязный список Глава II.3. Функции II.3.1.0 Подсчет числа вызовов функции II.3.2.0 Подсчет среднего значения II.3.3.0 Обработка одномерного массива в функции II.3.4.0 Указатель на последний элемент массива II.3.5.0 Функция обмена значений двух переменных II.3.6.0 Рекурсивный вызов II.3.7.0 Переменная сумма II.3.8.0 Допустимо ли выражение f() = 10.0? II.3.9.0 Предотвращение выхода за границы массива II.3.10. Вывод строки в стандартный поток II.3.11. Функции abs(), labs() и fabs() II.3.12. Ошибка в перегрузке функции II.3.13. Функция с переменным количеством параметров II.3.14. Указатель на функцию II.3.15. Обработка функцией элементов массива II.3.16. Односвязный список II.3.17. Двухсвязный список II.3.18. Создание файла с уникальным именем II.3.19. Количество строк в файле II.3.20. Вывод случайной строки из файла II.3.21. Вывод трех случайных строк файла II.3.22. Последние три строки файла II.3.23. Поиск строки в файле II.3.24. Самая длинная и самая короткая строки в файле II.3.25. Список слов заданной длины II.3.26. Поиск слов по первым символам II.3.27. Изменение порядка следования строк в файле II.3.28. Разбить файл на части II.3.29. Шаблоны функций II.3.30. Перегрузка шаблона функций Глава II.4. Объекты и классы II.4.1. Чем отличается структура struct от класса class? II.4.2. Чем отличается объединение union от класса class? II.4.3. Константы в классах II.4.4. Подсчет количества созданных объектов II.4.5. Найдите ошибку II.4.6. Использование объекта в нескольких файлах II.4.7. Инициализация объекта при помощи = II.4.8. Класс с динамическим массивом II.4.9. Класс-интерфейс к файлу II.4.10. Постраничная навигация II.4.11. Алфавитная навигация II.4.12. Дружественная функция II.4.13. Блокировка файла по статическому члену класса II.4.14. Блокировка файла двумя классами II.4.15. Копирующий конструктор II.4.16. Перегрузка оператора = II.4.17. Перегрузка логических операторов II.4.18. Перегрузка операторов +, -, / и * II.4.19. Перегрузка операторов ++ и - II.4.20. Перегрузка оператора [] II.4.21. Перегрузка оператора () II.4.22. Наследование одного класса другим II.4.23. Расширение функциональности класса II.4.24. Перегрузка метода базового класса II.4.25. Виртуальный класс II.4.26. Указатель на объект базового типа II.4.27. Чем отличается виртуальная функция от чисто виртуальной функции? II.4.28. Динамическая идентификация типов II.4.29. Приведение типов II.4.30. Обобщенный класс безопасного массива II.4.31. Использование параметров в шаблонах классов II.4.32. Перегрузка шаблонов II.4.33. Обобщенный двухсвязный список Глава II.5. Исключения II.5.1. Генерация исключений II.5.2. Перехват исключений в иерархии классов II.5.3. Перехват всех исключений II.5.4. Функция, генерирующая исключение II.5.5. Выделение динамической памяти II.5.6. Перегрузка операторов new и delete Глава II.6. Стандартная библиотека II.6.1.0 Стандартное пространство имен II.6.2.0 Класс auto_ptr II.6.3.0 Присваивание и класс auto_ptr II.6.4.0 Какие типы контейнеров поддерживаются в STL? II.6.5.0 Работа с вектором II.6.6.0 Работа с деком II.6.7.0 Работа со списком II.6.8.0 Работа с множеством II.6.9.0 Работа с отображением II.6.10. Преобразование одной коллекции в другую II.6.11. Допускается ли сравнение коллекций друг с другом? II.6.12. Сортировка строк II.6.13. Поиск максимального и минимального значений коллекции II.6.14. Обращение порядка следования элементов II.6.15. Сортировка содержимого файла II.6.16. Создание копии коллекции II.6.17. Удаление элементов коллекции II.6.18. Вывод содержимого произвольной коллекции II.6.19. Преобразование коллекции при копировании II.6.20. Что такое предикат? II.6.21. Что такое объект-функция? II.6.22. В чем особенность контейнера vector<bool>? Глава II.7. Ввод/вывод II.7.1. Что такое поток? II.7.2. Выравнивание строк по правому краю II.7.3. Выравнивание строк по правому и левому краям II.7.4. Ввод строк пользователем II.7.5. Перегрузка операторов >> и << II.7.6. Собственный манипулятор Глава II.8. Разное II.8.1. Кривая Безье II.8.2. Преобразование строк в массив II.8.3. Разгрузка баржи II.8.4. Длительность жизни ученого II.8.5. Выгода предпринимателя Заключение Приложение. Описание компакт-диска Предметный указатель