C++. Методики программирования Шилдта
Герберт Шилдт
Легендарный автор книг по программированию, Герберт Шилдт, предлагает некоторые из своих избранных подходов и приемов, оформленные в виде «книги рецептов». Организованный в виде справочника, каждый рецепт показывает, как решить конкретную практическую задачу. Рецепты начинаются со списка ключевых ингредиентов (классов, функций и заголовков), за которыми следуют пошаговые инструкции, описывающие процесс сборки завершенного решения. В подробных обсуждениях излагаются причины и сущность каждого шага, а пример полного кода рецепта позволяет проверить решение на практике. Каждый рецепт завершается списком вариантов и альтернатив, где предлагаются способы адаптации приема к разнообразным ситуациям. Начинающий вы или опытный программист, рассматриваемые в книге рецепты утолят любые аппетиты в программировании на C++.
Издательство: Вильямс, 2009 г.
ISBN 978-5-8459-1494-1, 978-0-07-148860-0
Количество страниц: 480.
Содержание книги «C++. Методики программирования Шилдта»:
- 17 Об авторе
- 17 О техническом редакторе
- 18 Предисловие
- 19 Коды примеров
- 19 Другие книги автора
- 20 От издательства
- 21 Глава 1. Обзор
- 21 Что внутри
- 23 Как организованы рецепты
- 23 Несколько предостережений
- 24 Необходимый опыт работы с C++
- 24 Версия C++
- 24 Соглашения о кодировании
- 26 Глава 2. Обработка строк
- 27 Обзор строк, завершающихся нулем
- 30 Обзор класса string
- 35 Исключения, связанные с объектами string
- 36 Выполнение базовых операций со строками, завершающимися нулем
- 36 Необходимые шаги
- 36 Обсуждение
- 37 Пример
- 39 Варианты и альтернативы
- 40 Поиск в строке, завершающейся нулем
- 40 Необходимые шаги
- 40 Обсуждение
- 41 Пример
- 41 Варианты и альтернативы
- 42 Обращение (реверс) строки, завершающейся нулем
- 42 Необходимые шаги
- 43 Обсуждение
- 43 Пример
- 44 Варианты и альтернативы
- 46 Игнорирование различий в регистре при сравнении завершающихся нулем строк
- 46 Необходимые шаги
- 47 Обсуждение
- 48 Пример
- 49 Варианты и альтернативы
- 50 Создание функции поиска и замены для завершающихся нулем строк
- 50 Необходимые шаги
- 51 Обсуждение
- 52 Пример
- 54 Варианты и альтернативы
- 57 Категоризация символов внутри строки, завершающейся нулем
- 57 Необходимые шаги
- 58 Обсуждение
- 58 Пример
- 59 Дополнительный пример: подсчет слов
- 61 Варианты и альтернативы
- 61 Разбиение на лексемы строки, завершающейся нулем
- 62 Необходимые шаги
- 62 Обсуждение
- 63 Пример
- 65 Варианты и альтернативы
- 68 Выполнение базовых операций над объектами string
- 69 Необходимые шаги
- 70 Обсуждение
- 72 Пример
- 75 Варианты и альтернативы
- 76 Поиск в объекте string
- 77 Необходимые шаги
- 77 Обсуждение
- 78 Пример
- 80 Дополнительный пример: класс tokenizer для объектов string
- 82 Варианты и альтернативы
- 83 Создание функции поиска и замены для объектов string
- 83 Необходимые шаги
- 83 Обсуждение
- 84 Пример
- 85 Варианты и альтернативы
- 86 Работа с объектами string посредством итераторов
- 87 Необходимые шаги
- 88 Обсуждение
- 90 Пример
- 92 Варианты и альтернативы
- 92 Создание независимых от регистра функций поиска и поиска с заменой для объектов string
- 93 Необходимые шаги
- 94 Обсуждение
- 94 Пример
- 97 Варианты и альтернативы
- 98 Преобразование объекта string в строку, завершающуюся нулем
- 99 Необходимые шаги
- 99 Обсуждение
- 99 Пример
- 101 Варианты и альтернативы
- 101 Реализация вычитания для объектов string
- 102 Необходимые шаги
- 102 Обсуждение
- 103 Пример
- 105 Варианты и альтернативы
- 107 Глава 3. Работа с контейнерами STL
- 108 Обзор STL
- 108 Контейнеры
- 108 Алгоритмы
- 108 Итераторы
- 110 Аллокаторы
- 110 Функциональные объекты
- 110 Адаптеры
- 110 Предикаты
- 110 Привязки и отрицатели
- 111 Контейнерные классы
- 112 Общая функциональность
- 116 Проблемы производительности
- 117 Базовые приемы использования последовательных контейнеров
- 118 Необходимые шаги
- 118 Обсуждение
- 120 Пример
- 124 Варианты и альтернативы
- 125 Использование vector
- 125 Необходимые шаги
- 126 Обсуждение
- 129 Пример
- 131 Варианты и альтернативы
- 132 Использование deque
- 133 Необходимые шаги
- 133 Обсуждение
- 134 Пример
- 137 Варианты и альтернативы
- 138 Использование list
- 138 Необходимые шаги
- 139 Обсуждение
- 141 Пример
- 143 Варианты и альтернативы
- 145 Использование адаптеров последовательных контейнеров: stack, queue и priority_queue
- 145 Необходимые шаги
- 146 Обсуждение
- 148 Примеры
- 150 Дополнительный пример: использование stack для создания калькулятора на четыре действия
- 152 Варианты и альтернативы
- 153 Хранение в контейнере определяемых пользователем объектов
- 153 Необходимые шаги
- 153 Обсуждение
- 154 Пример
- 156 Варианты и альтернативы
- 156 Базовые приемы использования ассоциативных контейнеров
- 158 Необходимые шаги
- 158 Обсуждение
- 162 Пример
- 166 Варианты и альтернативы
- 168 Использование map
- 168 Необходимые шаги
- 168 Обсуждение
- 171 Пример
- 173 Варианты и альтернативы
- 174 Использование multimap
- 174 Необходимые шаги
- 175 Обсуждение
- 177 Пример
- 178 Варианты и альтернативы
- 180 Использование set и multiset
- 181 Необходимые шаги
- 181 Обсуждение
- 183 Пример
- 185 Дополнительный пример: использование multiset для хранения объектов с дублированными ключами
- 188 Варианты и альтернативы
- 108 Обзор STL
- 189 Глава 4. Алгоритмы, функциональные объекты и другие компоненты STL
- 190 Обзор алгоритмов
- 190 Зачем нужны алгоритмы?
- 191 Алгоритмы — это шаблонные функции
- 191 Категории алгоритмов
- 195 Обзор функциональных объектов
- 196 Обзор привязчиков и отрицателей
- 197 Сортировка контейнера
- 197 Необходимые шаги
- 197 Обсуждение
- 198 Пример
- 199 Варианты и альтернативы
- 200 Нахождение элемента в контейнере
- 200 Необходимые шаги
- 201 Обсуждение
- 201 Пример
- 203 Дополнительный пример: извлечение предложений из вектора символов
- 204 Варианты и альтернативы
- 206 Использование search() для нахождения соответствующей последовательности
- 207 Необходимые шаги
- 207 Обсуждение
- 207 Пример
- 209 Варианты и альтернативы
- 210 Реверс, вращение и перемешивание последовательности
- 210 Необходимые шаги
- 210 Обсуждение
- 211 Пример
- 212 Дополнительный пример: использование обратных итераторов для выполнения поворота вправо
- 213 Варианты и альтернативы
- 214 Цикл по контейнеру с помощью for_each()
- 214 Необходимые шаги
- 215 Обсуждение
- 215 Пример
- 216 Варианты и альтернативы
- 217 Использование transform() для изменения последовательности
- 217 Необходимые шаги
- 218 Обсуждение
- 218 Пример
- 220 Варианты и альтернативы
- 222 Выполнение операций с множествами
- 223 Необходимые шаги
- 223 Обсуждение
- 225 Пример
- 226 Варианты и альтернативы
- 227 Изменение порядка последовательности
- 227 Необходимые шаги
- 228 Обсуждение
- 228 Пример
- 229 Варианты и альтернативы
- 230 Изменение порядка последовательности
- 230 Необходимые шаги
- 230 Обсуждение
- 231 Пример
- 232 Варианты и альтернативы
- 232 Замена и удаление элементов контейнера
- 232 Необходимые шаги
- 233 Обсуждение
- 233 Пример
- 234 Варианты и альтернативы
- 235 Слияние двух сортированных последовательностей
- 236 Необходимые шаги
- 236 Обсуждение
- 237 Пример
- 238 Варианты и альтернативы
- 239 Создание и управление кучей
- 239 Необходимые шаги
- 239 Обсуждение
- 240 Пример
- 241 Варианты и альтернативы
- 242 Создание алгоритма
- 242 Необходимые шаги
- 242 Обсуждение
- 243 Пример
- 245 Дополнительный пример: использование предиката со специальным алгоритмом
- 247 Варианты и альтернативы
- 248 Использование встроенного функционального объекта
- 248 Необходимые шаги
- 249 Пример
- 251 Варианты и альтернативы
- 251 Создание специального функционального объекта
- 252 Необходимые шаги
- 252 Обсуждение
- 253 Пример
- 255 Дополнительный пример: использование функционального объекта для поддержки информации о состоянии
- 257 Варианты и альтернативы
- 258 Использование привязчика
- 258 Необходимые шаги
- 259 Обсуждение
- 259 Пример
- 261 Варианты и альтернативы
- 261 Использование отрицателя
- 262 Необходимые шаги
- 262 Обсуждение
- 262 Пример
- 263 Варианты и альтернативы
- 264 Использование адаптера указателя на функцию
- 264 Необходимые шаги
- 264 Обсуждение
- 265 Пример
- 266 Варианты и альтернативы
- 267 Использование потоковых итераторов
- 267 Необходимые шаги
- 268 Обсуждение
- 271 Пример
- 273 Дополнительный пример: создание файлового фильтра на базе STL
- 274 Варианты и альтернативы
- 275 Использование адаптеров итераторов вставки
- 275 Необходимые шаги
- 276 Обсуждение
- 276 Пример
- 278 Варианты и альтернативы
- 190 Обзор алгоритмов
- 279 Глава 5. Работа с функциями ввода-вывода
- 280 Обзор ввода-вывода
- 280 Потоки C++
- 281 Классы потоков C++
- 286 Специализации потоковых классов
- 287 Предопределенные потоки C++
- 288 Флаги формата
- 288 Манипуляторы ввода-вывода
- 288 Проверка ошибок
- 290 Открытие и закрытие файла
- 293 Запись форматированных данных в текстовый файл
- 294 Необходимые шаги
- 294 Обсуждение
- 295 Пример
- 296 Варианты и альтернативы
- 297 Чтение форматированных данных из текстового файла
- 297 Необходимые шаги
- 297 Обсуждение
- 299 Пример
- 300 Варианты и альтернативы
- 301 Запись неформатированных двоичных данных в файл
- 301 Необходимые шаги
- 301 Обсуждение
- 303 Пример
- 304 Варианты и альтернативы
- 305 Чтение неформатированных двоичных данных из файла
- 306 Необходимые шаги
- 306 Обсуждение
- 307 Пример
- 308 Варианты и альтернативы
- 310 Использование get() и getline() для чтения из файла
- 310 Необходимые шаги
- 310 Обсуждение
- 311 Пример
- 313 Варианты и альтернативы
- 314 Чтение и запись в файл
- 314 Необходимые шаги
- 314 Обсуждение
- 316 Пример
- 317 Варианты и альтернативы
- 317 Обнаружение EOF
- 317 Необходимые шаги
- 317 Обсуждение
- 318 Пример
- 319 Дополнительный пример: простая утилита сравнения файлов
- 321 Варианты и альтернативы
- 321 Использование исключений для обнаружения и обработки ошибок ввода-вывода
- 321 Необходимые шаги
- 322 Обсуждение
- 322 Пример
- 324 Варианты и альтернативы
- 324 Использование файлового ввода-вывода произвольного доступа
- 325 Необходимые шаги
- 325 Обсуждение
- 326 Пример
- 327 Дополнительный пример: использование ввода-вывода с произвольным доступом для обращения к записям фиксированной длины
- 329 Варианты и альтернативы
- 330 Опережающее чтение файла
- 330 Необходимые шаги
- 330 Обсуждение
- 331 Пример
- 333 Варианты и альтернативы
- 334 Использование строковых потоков
- 334 Необходимые шаги
- 334 Обсуждение
- 335 Пример
- 337 Варианты и альтернативы
- 337 Создание специальных вставщиков и экстракторов
- 338 Необходимые шаги
- 338 Обсуждение
- 339 Пример
- 340 Варианты и альтернативы
- 340 Создание манипулятора без параметров
- 341 Необходимые шаги
- 341 Обсуждение
- 342 Пример
- 343 Варианты и альтернативы
- 343 Создание параметризованного манипулятора
- 344 Необходимые шаги
- 345 Обсуждение
- 346 Пример
- 347 Варианты и альтернативы
- 347 Получение или установка локали потока
- 348 Необходимые шаги
- 348 Обсуждение
- 348 Пример
- 349 Варианты и альтернативы
- 350 Использование файловой системы на основе C
- 351 Необходимые шаги
- 351 Обсуждение
- 354 Пример
- 355 Варианты и альтернативы
- 357 Переименование и удаление файла
- 357 Необходимые шаги
- 357 Обсуждение
- 357 Пример
- 358 Варианты и альтернативы
- 280 Обзор ввода-вывода
- 359 Глава 6. Форматирование данных
- 360 Обзор форматирования
- 360 Флаги формата
- 362 Ширина поля, точность и символ-заполнитель
- 362 Связанные с форматом функции-члены потоков
- 362 Манипуляторы ввода-вывода
- 363 Форматирование данных с использованием библиотеки локализации
- 363 Семейство функций printf()
- 364 Функция strftime()
- 364 Обзор фасетов
- 366 Доступ к флагам формата через функции-члены потоков
- 367 Необходимые шаги
- 367 Обсуждение
- 367 Пример
- 368 Дополнительный пример: отображение установок флагов формата
- 370 Варианты и альтернативы
- 371 Отображение числовых значений в различных форматах
- 371 Необходимые шаги
- 372 Обсуждение
- 373 Пример
- 374 Варианты и альтернативы
- 374 Установка точности
- 374 Необходимые шаги
- 375 Обсуждение
- 375 Пример
- 376 Варианты и альтернативы
- 376 Установка ширины поля и символа-заполнителя
- 376 Необходимые шаги
- 377 Обсуждение
- 377 Пример
- 378 Дополнительный пример: выравнивание столбцов цифр
- 379 Варианты и альтернативы
- 379 Выравнивание вывода
- 379 Необходимые шаги
- 380 Обсуждение
- 380 Пример
- 381 Варианты и альтернативы
- 382 Использование манипуляторов ввода-вывода для форматирования данных
- 382 Необходимые шаги
- 382 Обсуждение
- 384 Пример
- 386 Варианты и альтернативы
- 386 Форматирование числовых данных для локали
- 386 Необходимые шаги
- 386 Обсуждение
- 387 Пример
- 387 Варианты и альтернативы
- 389 Форматирование денежных величин с использованием фасета money_put
- 389 Необходимые шаги
- 389 Обсуждение
- 390 Пример
- 391 Варианты и альтернативы
- 392 Использование фасетов moneypunct и numpunct
- 392 Необходимые шаги
- 393 Обсуждение
- 394 Пример
- 395 Варианты и альтернативы
- 397 Форматирование времени и даты с использованием фасета time_put
- 397 Необходимые шаги
- 398 Обсуждение
- 400 Пример
- 401 Варианты и альтернативы
- 401 Форматирование данных в строку
- 401 Необходимые шаги
- 402 Обсуждение
- 402 Пример
- 403 Варианты и альтернативы
- 403 Форматирование времени и даты с применением strftime()
- 404 Необходимые шаги
- 404 Обсуждение
- 405 Пример
- 406 Варианты и альтернативы
- 407 Использование printf() для форматирования данных
- 408 Необходимые шаги
- 408 Обсуждение
- 411 Флаги #, + и пробел
- 412 Пример
- 413 Варианты и альтернативы
- 360 Обзор форматирования
- 415 Глава 7. Попурри
- 416 Базовая техника перегрузки операций
- 416 Необходимые шаги
- 417 Обсуждение
- 421 Пример
- 424 Варианты и альтернативы
- 425 Перегрузка операции () вызова функции
- 426 Необходимые шаги
- 426 Обсуждение
- 427 Пример
- 428 Варианты и альтернативы
- 429 Перегрузка операции индекса []
- 429 Необходимые шаги
- 429 Обсуждение
- 430 Пример
- 433 Варианты и альтернативы
- 433 Перегрузка операции ->
- 433 Необходимые шаги
- 433 Обсуждение
- 434 Пример
- 434 Дополнительный пример: простой класс безопасного указателя
- 437 Варианты и альтернативы
- 438 Перегрузка операций new и delete
- 438 Необходимые шаги
- 438 Обсуждение
- 440 Пример
- 442 Варианты и альтернативы
- 443 Перегрузка операций инкремента и декремента
- 443 Необходимые шаги
- 443 Обсуждение
- 444 Пример
- 447 Варианты и альтернативы
- 448 Создание функции преобразования
- 448 Необходимые шаги
- 448 Обсуждение
- 449 Пример
- 450 Варианты и альтернативы
- 451 Создание копирующего конструктора
- 451 Необходимые шаги
- 451 Обсуждение
- 453 Пример
- 455 Дополнительный пример: безопасный массив, использующий динамическое выделение памяти
- 460 Варианты и альтернативы
- 461 Определение типа объекта во время выполнения
- 461 Необходимые шаги
- 462 Обсуждение
- 463 Пример
- 466 Варианты и альтернативы
- 466 Использование комплексных чисел
- 467 Необходимые шаги
- 467 Обсуждение
- 468 Пример
- 468 Варианты и альтернативы
- 469 Использование auto_ptr
- 469 Необходимые шаги
- 469 Обсуждение
- 470 Пример
- 471 Варианты и альтернативы
- 472 Создание явного конструктора
- 472 Необходимые шаги
- 472 Обсуждение
- 473 Пример
- 474 Варианты и альтернативы
- 416 Базовая техника перегрузки операций
- 475 Предметный указатель
Инструкция как скачать книгу Герберт Шилдт: C++. Методики программирования Шилдта в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.