Содержание
-
Предисловие
-
Глава 1
Сборка приложений на C++
-
1.0. Введение в сборку
-
1.1. Получение и установка GCC
-
1.2. Сборка простого приложения «Hello, World» из командной строки
-
1.3. Сборка статической библиотеки из командной строки
-
1.4. Сборка динамической библиотеки из командной строки
-
1.5. Сборка сложного приложения из командной строки
-
1.6. Установка Boost.Build
-
1.7. Сборка простого приложения «Hello, World» с помощью Boost.Build
-
1.8. Сборка статической библиотеки с помощью Boost.Build
-
1.9. Сборка динамической библиотеки с помощью Boost.Build
-
1.10. Сборка сложного приложения с помощью BoostBuild
-
1.11. Сборка статической библиотеки с помощью IDE
-
1.12. Сборка динамической библиотеки с помощью IDE
-
1.13. Сборка сложного приложения с помощью IDE
-
1.14. Получение GNU make
-
1.15. Сборка простого приложения «Hello, World» с помощью GNU make
-
1.16. Сборка статической библиотеки с помощью GNU Make
-
1.17. Сборка динамической библиотеки с помощью GNU Make
-
1.18. Сборка сложного приложения с помощью GNU make
-
1.19. Определение макроса
-
1.20. Указание опций командной строки из IDE
-
1.21. Создание отладочной сборки
-
1.22. Создание окончательной сборки
-
1.23. Указание варианта библиотеки времени выполнения
-
1.24. Включение строгого соответствия стандарту C++
-
1.25. Указание определенной библиотеки для автоматической компоновки с исходным файлом
-
1.26. Использование экспортируемых шаблонов
-
Глава 2
Организация кода
-
2.0. Введение
-
2.1. Обеспечение единственности подключения заголовочного файла
-
2.2. Обеспечение единственности экземпляра переменной при большом количестве исходных файлов
-
2.3. Снижение числа #include с помощью предварительного объявления классов
-
2.4. Предотвращение конфликта имен с помощью пространств имен
-
2.5. Включение встраиваемого файла
-
Глава 3
Числа
-
3.0. Введение
-
3.1. Преобразование строки в числовой тип
-
3.2. Преобразование чисел в строки
-
3.3. Проверка, содержит ли строка допустимое число
-
3.4. Сравнение чисел с плавающей точкой с ограниченной точностью
-
3.5. Лексический анализ строки, содержащей число в экспоненциальной форме
-
3.6. Преобразования между числовыми типами
-
3.7. Получение минимального и максимального значений числового типа
-
Глава 4
Строки и текст
-
4.0. Введение
-
4.1. Дополнение строк
-
4.2. Обрезка строк
-
4.3. Хранение строк в последовательности
-
4.4. Получение длины строки
-
4.5. Обращение строк
-
4.6. Разделение строки
-
4.7. Разбиение строки на лексемы
-
4.8. Объединение нескольких строк
-
4.9. Поиск в строках
-
4.10. Поиск n-го вхождения подстроки
-
4.11. Удаление подстроки из строки
-
4.12. Преобразование строки к нижнему или верхнему регистру
-
4.13. Выполнение сравнения строк без учета регистра
-
4.14. Выполнение поиска строк без учета регистра
-
4.15. Преобразование между табуляциями и пробелами в текстовых файлах
-
4.16. Перенос строк в текстовом файле
-
4.17. Подсчет числа символов, слов и строк в текстовом файле
-
4.18. Подсчет вхождений каждого слова в текстовом файле
-
4.19. Добавление полей в текстовый файл
-
4.20. Выравнивание текста в текстовом файле
-
4.21. Замена в текстовом файле последовательностей пробелов на один пробел
-
4.22. Автозамена текста при изменении буфера
-
4.23. Чтение текстового файла с разделителями-запятыми
-
4.24. Использование регулярных выражений для разделения строки
-
Глава 5
Даты и время
-
5.0. Введение
-
5.1. Получение текущей даты и времени
-
5.2. Форматирование даты/времени в виде строки
-
5.3. Выполнение вычислений с датами и временем
-
5.4. Преобразование между часовыми поясами
-
5.5. Определение номера дня в году
-
5.6. Определение ограниченных типов значений
-
Глава 6
Управление данными с помощью контейнеров
-
6.0. Введение
-
6.1. Использование vector вместо массивов
-
6.2. Эффективное использование vector
-
6.3. Копирование вектора
-
6.4. Хранение указателей в векторе
-
6.5. Хранение объектов в списке
-
6.6. Отображение строк на другие объекты
-
6.7. Использование хеш-контейнеров
-
6.8. Хранение объектов в упорядоченном виде
-
6.9. Хранение контейнеров в контейнерах
-
Глава 7
Алгоритмы
-
7.0. Введение
-
7.1. Перебор элементов контейнера
-
7.2. Удаление объектов из контейнера
-
7.3. Случайное перемешивание данных
-
7.4. Сравнение диапазонов
-
7.5. Объединение данных
-
7.6. Сортировка диапазона
-
7.7. Разделение диапазона
-
7.8. Выполнение для последовательностей операций над множествами
-
7.9. Преобразование элементов последовательности
-
7.10. Написание собственного алгоритма
-
7.11. Печать диапазона в поток
-
Глава 8
Классы
-
8.0. Введение
-
8.1. Инициализация переменных-членов класса
-
8.2. Использование функции для создания объектов (шаблон фабрики)
-
8.3. Использование конструкторов и деструкторов для управления ресурсами (RAII)
-
8.4. Автоматическое добавление новых экземпляров класса в контейнер
-
8.5. Гарантия единственности копии переменной-члена
-
8.6. Определение типа объекта во время выполнения
-
8.7. Определение, является ли класс объекта подклассом другого класса
-
8.8. Присвоение каждому экземпляру класса уникального идентификатора
-
8.9. Создание Singleton-класса
-
8.10. Создание интерфейса с помощью абстрактного базового класса
-
8.11. Написание шаблона класса
-
8.12. Написание шаблона метода класса
-
8.13. Перегрузка операторов инкремента и декремента
-
8.14. Перегрузка арифметических операторов и операторов присвоения для работы с классами
-
8.15. Вызов виртуальной функции родительского класса
-
Глава 9
Исключения и безопасность
-
9.0. Введение
-
9.1. Создание класса исключения
-
9.2. Создание безопасного при исключениях конструктора
-
9.3. Создание безопасного при исключениях списка инициализации
-
9.4. Создание безопасных при исключениях функций-членов
-
9.5. Безопасное копирование объекта
-
Глава 10
Потоки и файлы
-
10.0. Введение
-
10.1. Вывод выровненного текста
-
10.2. Форматирование вывода чисел с плавающей точкой
-
10.3. Написание своих собственных манипуляторов потока
-
10.4. Создание класса, записываемого в поток
-
10.5. Создание класса, считываемого из потока
-
10.6. Получение информации о файле
-
10.7. Копирование файла
-
10.8. Удаление или переименование файла
-
10.9. Создание временного имени файла и временного файла
-
10.10. Создание каталога
-
10.11. Удаление каталога
-
10.12. Чтение содержимого каталога
-
10.13. Извлечение расширения файла из строки
-
10.14. Извлечение имени файла из полного пути
-
10.15. Извлечение пути из полного имени файла
-
10.16. Замена расширения файла
-
10.17. Объединение двух путей в один
-
Глава 11
Наука и математика
-
11.0. Введение
-
11.1. Подсчет количества элементов в контейнере
-
11.2. Поиск наибольшего или наименьшего значения в контейнере
-
11.3. Вычисление суммы и среднего значения элементов контейнера
-
11.4. Фильтрация значений, выпадающих из заданного диапазона
-
11.5. Вычисление дисперсии, стандартного отклонения и других статистических функций
-
11.6. Генерация случайных чисел
-
11.7. Инициализация контейнера случайными числами
-
11.8. Представление динамического числового вектора
-
11.9. Представление числового вектора фиксированного размера
-
11.10. Вычисление скалярного произведения
-
11.11. Вычисление нормы вектора
-
11.12. Вычисление расстояния между векторами
-
11.13. Реализация итератора с шагом
-
11.14. Реализация динамической матрицы
-
11.15. Реализация статической матрицы
-
11.16. Умножение матриц
-
11.17. Вычисление быстрого преобразования Фурье
-
11.18. Работа с полярными координатами
-
11.19. Выполнение операций с битовыми наборами
-
11.20. Представление больших чисел фиксированного размера
-
11.21. Реализация чисел с фиксированной точкой
-
Глава 12
Многопоточная обработка
-
12.0. Введение
-
12.1. Создание потока
-
12.2. Обеспечение потокозащищенности ресурсов
-
12.3. Уведомление одного потока другим
-
12.4. Однократная инициализация совместно используемых ресурсов
-
12.5. Передача аргумента функции потока
-
Глава 13
Интернационализация
-
13.0. Введение
-
13.1. Жесткое кодирование строк в коде Unicode
-
13.2. Запись и чтение чисел
-
13.3. Запись и чтение дат и времен
-
13.4. Запись и чтение денежных значений
-
13.5. Сортировка локализованных строк
-
Глава 14
XML
-
14.0. Введение
-
14.1. Синтаксический анализ простого документа XML
-
14.2. Работа со строками Xerces
-
14.3. Синтаксический анализ сложного документа XML
-
14.4. Манипулирование документом XML
-
14.5. Проверка документа XML на соответствие определению DTD
-
14.6. Проверка документа XML на соответствие схеме
-
14.7. Преобразование документа XML с помощью XSLT
-
14.8. Вычисление XPath-выражения
-
14.9. Применение XML для сохранения и восстановления набора объектов
-
Глава 15
Разные функции
-
15.0. Введение
-
15.1. Применение указателей функций для их обратного вызова
-
15.2. Применение указателей для членов класса
-
15.3. Обеспечение невозможности модификации аргумента в функции
-
15.4. Обеспечение невозможности модификации своих объектов в функции-члене
-
15.5. Написание оператора, не являющегося функцией-членом
-
15.6. Инициализация последовательности значениями, разделяемыми запятыми
-
Об авторах
-
***
-
Колофон