Оглавление Введение 13
Для кого предназначена книга? 17
ЧАСТЬ I. ЗАДАЧИ ПО ОСНОВАМ ЯЗЫКА 19
Глава I.1. Базовые конструкции языка 21
I.1.1.0 Включение заголовочных файлов 22
I.1.2.0 Сколько байтов занимает каждый из базовых типов? 22
I.1.3.0 Сколько байтов занимает тип void? 23
I.1.4.0 Равны ли числа? 23
I.1.5.0 Результат сравнения? 23
I.1.6.0 Сравнение инкремента и постинкремента 24
I.1.7.0 Четное или нечетное? 25
I.1.8.0 Имя программы 25
I.1.9.0 Чем отличается switch от конструкции if-else-if? 25
I.1.10. Вывод случайного числа символов 27
I.1.11. Вывод четных чисел 27
I.1.12. Вывод всех видимых ASCII-символов 27
I.1.13. Поиск простых чисел 27
I.1.14. Упаковка цикла for 27
I.1.15. Преобразование десятичного числа в двоичное 29
I.1.16. Преобразование двоичного числа в десятичное 29
I.1.17. Преобразование десятичного числа в восьмеричное 29
I.1.18. Преобразование восьмеричного числа в десятичное 29
I.1.19. Преобразование десятичного числа в шестнадцатеричное 29
I.1.20. Преобразование шестнадцатеричного числа в десятичное 29
I.1.21. Исключающее ИЛИ 29
I.1.22. Возведение числа в степень 30
I.1.23. Смена знака числа 30
I.1.24. Изменение регистра строки 30
I.1.25. Глобальные переменные 30
I.1.26. Статическая глобальная переменная 31
I.1.27. Оператор "запятая" 31
I.1.28. Использование структур и перечислений 32
I.1.29. Объединение и битовые поля 32
I.1.30. Преобразование арабского числа в римское 32
Глава I.2. Указатели, ссылки, массивы, строки 33
I.2.1.0 Укоротить строку 34
I.2.2.0 Объявление строки 34
I.2.3.0 Размер строки 35
I.2.4.0 Количество элементов массива 35
I.2.5.0 Увеличение размера строки 35
I.2.6.0 Чередование символов строки и пробелов 36
I.2.7.0 Сравнение строк 36
I.2.8.0 Упаковка IP-адреса 36
I.2.9.0 Адрес переменной 37
I.2.10. Обход массива при помощи указателей 37
I.2.11. Получение старшего и младшего разрядов 38
I.2.12. Новый тип 38
I.2.13. Блочный вывод строки 39
I.2.14. Разбивка строки по пробелу 39
I.2.15. Найдите ошибку 39
I.2.16. Допустимо ли выражение ****k=56? 40
I.2.17. Массив строк 40
I.2.18. Динамический массив 40
I.2.19. Динамический многомерный массив 40
I.2.20. Заполнение элементов массива 40
I.2.21. Чем отличается int * const от int const *? 41
I.2.22. Отличие ссылки от указателя 41
I.2.23. Указатель и ссылка на структуру 41
I.2.24. Указатель на структуру 42
I.2.25. Использование структур для хранения строк 42
I.2.26. Односвязный список 43
Глава I.3. Функции 45
I.3.1.0 Подсчет числа вызовов функции 45
I.3.2.0 Подсчет среднего значения 45
I.3.3.0 Обработка одномерного массива в функции 46
I.3.4.0 Указатель на последний элемент массива 46
I.3.5.0 Функция обмена значений двух переменных 46
I.3.6.0 Рекурсивный вызов 47
I.3.7.0 Переменная сумма 47
I.3.8.0 Допустимо ли выражение f() = 10.0 ? 47
I.3.9.0 Предотвращение выхода за границы массива 47
I.3.10. Вывод строки в стандартный поток 47
I.3.11. Функции abs(), labs() и fabs() 48
I.3.12. Ошибка в перегрузке функции 48
I.3.13. Функция с переменным количеством параметров 49
I.3.14. Указатель на функцию 49
I.3.15. Обработка функцией элементов массива 49
I.3.16. Односвязный список 50
I.3.17. Двухсвязный список 50
I.3.18. Создание файла с уникальным именем 51
I.3.19. Количество строк в файле 51
I.3.20. Вывод случайной строки из файла 51
I.3.21. Вывод трех случайных строк файла 51
I.3.22. Последние три строки файла 52
I.3.23. Поиск строки в файле 52
I.3.24. Самая длинная и самая короткая строка в файле 52
I.3.25. Список слов заданной длины 52
I.3.26. Поиск слов по первым символам 52
I.3.27. Изменение порядка следования строк в файле 52
I.3.28. Разбиение файла на части 53
I.3.29. Шаблоны функций 53
I.3.30. Перегрузка шаблона функций 53
Глава I.4. Объекты и классы 55
I.4.1.0 Чем отличается структура struct от класса class? 55
I.4.2.0 Чем отличается объединение union от класса class? 56
I.4.3.0 Константы в классах 56
I.4.4.0 Подсчет количества созданных объектов 56
I.4.5.0 Найдите ошибку 56
I.4.6.0 Использование объекта в нескольких файлах 57
I.4.7.0 Инициализация объекта при помощи = 58
I.4.8.0 Класс с динамическим массивом 58
I.4.9.0 Класс-интерфейс к файлу 58
I.4.10. Постраничная навигация 59
I.4.11. Алфавитная навигация 60
I.4.12. Дружественная функция 60
I.4.13. Блокировка файла по статическому члену класса 61
I.4.14. Блокировка файла двумя классами 61
I.4.15. Копирующий конструктор 62
I.4.16. Перегрузка оператора = 63
I.4.17. Перегрузка логических операторов 63
I.4.18. Перегрузка операторов +, –, / и * 63
I.4.19. Перегрузка операторов ++ и -- 63
I.4.20. Перегрузка оператора [] 64
I.4.21. Перегрузка оператора () 64
I.4.22. Наследование одного класса другим 65
I.4.23. Расширение функциональности класса 65
I.4.24. Перегрузка метода базового класса 65
I.4.25. Виртуальный класс 66
I.4.26. Указатель на объект базового типа 66
I.4.27. Чем отличается виртуальная функция от чисто виртуальной функции? 67
I.4.28. Динамическая идентификация типов 67
I.4.29. Приведение типов 67
I.4.30. Обобщенный класс безопасного массива 67
I.4.31. Использование параметров в шаблонах классов 67
I.4.32. Перегрузка шаблонов 68
I.4.33. Обобщенный двухсвязный список 68
Глава I.5. Исключения 69
I.5.1. Генерация исключений 69
I.5.2. Перехват исключений в иерархии классов 69
I.5.3. Перехват всех исключений 70
I.5.4. Функция, генерирующая исключение 70
I.5.5. Выделение динамической памяти 70
I.5.6. Перегрузка операторов new и delete 71
Глава I.6. Стандартная библиотека 73
I.6.1.0 Стандартное пространство имен 73
I.6.2.0 Класс auto_ptr 74
I.6.3.0 Присваивание и класс auto_ptr 75
I.6.4.0 Какие типы контейнеров поддерживаются в STL? 76
I.6.5.0 Работа с вектором 76
I.6.6.0 Работа с деком 76
I.6.7.0 Работа со списком 77
I.6.8.0 Работа с множеством 77
I.6.9.0 Работа с отображением 77
I.6.10. Преобразование одной коллекции в другую 78
I.6.11. Допускается ли сравнение коллекций друг с другом? 78
I.6.12. Сортировка строк 78
I.6.13. Поиск максимального и минимального значений коллекции 78
I.6.14. Обращение порядка следования элементов 78
I.6.15. Сортировка содержимого файла 79
I.6.16. Создание копии коллекции 79
I.6.17. Удаление элементов коллекции 79
I.6.18. Вывод содержимого произвольной коллекции 81
I.6.19. Преобразование коллекции при копировании 81
I.6.20. Что такое предикат? 81
I.6.21. Что такое объект-функция? 81
I.6.22. В чем особенность контейнера vector? 81
Глава I.7. Ввод/вывод 83
I.7.1. Что такое поток? 83
I.7.2. Выравнивание строк по правому краю 83
I.7.3. Выравнивание строк по правому и левому краям 84
I.7.4. Ввод строк пользователем 84
I.7.5. Перегрузка операторов >> и > и