Теория и практика C++ — Книга Герберта Шилдта, одного из самых известных авторов компьютерной литературы, посвящена обсуждению сложных вопросов программирования. В ней подробно рассмотрены параметризованные функции и классы, а также такие задачи программирования, как реализация разреженных массивов, построение программ разбора математических выражений, алгоритмы шифрования и сжатия данных, а также проблемы разработки собственных языков программирования и написания интеграторов для них. Приводятся ценные практические советы по приемам и методам работы, а также тексты готовых работающих программ.
Название: Теория и практика C++ Автор: Г. Шилдт Издательство: BHV — Санкт-Петербург Год: 1999 Страниц: 416 Формат: PDF Размер: 13,4 МБ ISBN: 5-7791-0029-2 Качество: Отличное Язык: Русский
Содержание:
Введение Глава 1. Использование параметризованных функций Почему следует использовать параметр изо ванные функции? Методы параметризации без использования шаблонов Изобретение шаблонов Обзор функций шаблонов Эффективность шаблонов функций Построение параметризованных функций сортировки Классы алгоритмов сортировки Сравнительный анализ алгоритмов сортировки Пузырьковая сортировка - злой дух перестановок Сортировка методом отбора Сортировка методом вставки Усовершенствованные методы сортировки Сортировка методом Шелла Метод быстр ой сортировки Сравнение алгоритма быстрой сортировки со стандартной функцией qsort() Сортировка типов, определенных пользователем Выбор метода сортировки Поиск Методы поиска Последовательный поиск Бинарный поиск Рекомендации для самостоятельной разработки Глава 2. Исследование параметризованных классов Обзор параметр изо ванных классов Ограниченные массивы Перегрузка оператора [] Построение параметризованного ограниченного массива Очереди Циклическая очередь Стеки Связные списки Построение параметризованного класса списка с двойными связями Функция store() Функция remove() Отображение списка Поиск объекта в списке Полный листинг параметризованного класса связного списка с двойными ссылками Бинарные деревья Параметризованный класс дерева Добавление элементов в дерево Прохождение дерева Поиск по дереву Удаление элемента дерева Рекомендации для самостоятельной разработки Глава 3. Объектно-ориентированная программа разбора математических выражений Выражения Разбор выражений: постановка проблемы Разбор выражения Класс Parser Разбиение выражений Простая программа разбора выражений Принципы работы программы разбора выражений Включение в программу разбора выражений возможность работы с переменными Синтаксическая проверка в рекурсивно-нисходящем алгоритме разбора выражений Построение параметризованной версии программы разбора выражений Рекомендации для самостоятельной разработки Глава 4. Разреженные массивы в стиле С++ Цели разработки разреженных массивов Объекты типа разреженных массивов Разреженный массив на базе связного списка Некоторые детали использования связного списка Анализ подхода с использованием связного списка Разреженным массивы на основе бинарных деревьев Некоторые детали реализации разреженных массивов на основе бинарных деревьев Анализ метода реализации разреженных массивов на основе бинарных деревьев Разреженные массивы на основе массивов указателей Некоторые детали реализации разреженных массивов с помощью массива указателей Анализ метода, использующего массив указателей Хэширование Некоторые детали хэширования Анализ хэширования Выбор подхода к реализации разреженных массивов Рекомендации для самостоятельной разработки Глава 5. Принцивы работы с информацией типа Run-time и ее использование Зачем нужна информация RTTI? Использование механизма typeid Использование typeid для исправления программы обработки координат Использование механизма dynamic_cast Операторы преобразования типов Использование оператора dynamic_cast для исправления функции quadrant() Применеине RTТI Рекомендации дл я самостоятельной разработки Глава 6. Строки: использование стандартного класса строк Почему стандартный класс string включен в определение С++? Конструкторы строк Операторы класса string Некоторые функции-члены класса string Присваивание и добавление частей строк Вставка, удаление и замена Поиск подстрок Сравнение частей строк Получение длины строки Получение строки, завершающейся нулем Простой строкаориентированный редактор, использующий класс string Некоторые детали работы редактора Рекомендации для самостоятельной разработки Глава 7. Шифрование и сжатие данных Краткая история криптографии Три основных типа шифров Шифры замены Алгоритмы перестановок Шифры битовых манипуляций Сжатие данных Преобразование 8-битного набора символов в 7-битный Преобразование 4-байтового набора в 3-байтовый Рекомендации для самостоятельной разработки Глава 8. Интерфейс с функциями языка ассемблера Для чего нужно использование языка ассемблера? Основные принципы интерфейса с языком ассемблера Соглашения о вызовах для компилятора С++ Соглашения о вызовах для Microsoft /Borlaпd С++ Несколько слов о моделях памяти Разработка функции на ассемблере Передача аргументов функции Вызов библиотечных функций и операторов Получение доступа к структурам и классам Использование указателей и ссылок Пример, использующий гигантскую (huge) модель памяти Ручная оптимизация Построение основы дл я кода на ассемблере Использование asm Рекомендации для самостоятельной разработки Глава 9. Создание и интеграция новых типов данных Теория множеств Операции над множествами Определение типа множества Конструкторы и деструктор класса Set Добавление и удаление членов множества Определение членства Конструкт ор Сору Присваивание для множеств Перегруз ка оператора + Добавление нового элемента в состав множества Построение объединения множеств Перегрузка оператора Удаление элемента из множества Разность множеств Пересечение множеств Симметричная разность Определение равенства, неравенства и подмножества Определение членства Преобразование в целое Перегрузка операторов ввода/вывода Демонстрационная программа работы с множествами Рекомендации для самостоятельной разработки Глава 10. Реализация языковых интерпретаторов на С++ Модуль разбора выражений Small BASIC Выражения Small BASIC Элементы Small BASIC Программа разбора выражений Small BASIC Как программа разбора выражений обрабатывает переменные Интерпретатор Small BASIC Ключевые слова Загрузка программы Главный цикл Функция присваивания Команда PRINT Команда INPUT Команда GOTO Утверждение IF Цикл FOR Конструкция GOSUB Полный код интерпретатора Использование Small BASIC Дополнение интерпретатора и расширение его возможностей Разработка собственного языка программирования Глава 11. От С++ к Java Что представляет собой Java? Почему Java? Защищенность Переносимость Магическое решение Java: Java Bytecode Различия между Java и С++ Какие возможности отсутствуют в Java? Что было добавлено в Java? Пример программы на Java Методы вместо функций Компиляция программы на Java Второй пример Работа с классами Финализаторы Иерархия классов Java Классы и файлы Пакеты и импорт Интерфейсы Стандартные классы Рекомендации для самостоятельной разработки Приложеине А. Список ключевых слов С ++ Index