В новом издании популярной книги известного автора и специалиста по С++ рассматривается устоявшаяся версия языка, соответствующая стандарту ISO/АNSI. Изложение материала не привязано ни к какой конкретной реализации С++. В основе изложения материала лежит оригинальная методика, разработанная автором и неоднократно проверенная на различных группах пользователей.
В действительности, как упоминалось ранее, библиотека . Более того, можно разработать некоторый класс, подоб. Есть предопределенные специализации шаб. Класс . Существуют предопределенные специализации шаблона . В них функции . Класс . Давайте посмотрим, что для этого, может быть, нужно и как это можно реализовать. Каждый раз, когда вызывается такая функция, она выделяет память из . Мы с вами также знаем и решение — просто помнить о том, что нужно освободить зарезервированную. Иногда об этом можно забыть или помнить, но случайно удалить или заком Класс . И даже если помнить об этом всегда, проблемы остаются. Представим себе такую вариацию. Эту ошибку можно исправить, как было показано в главе . Давайте подумаем, что для этого требуется. память, занимаемая указателем . Было бы хорошо, если бы память, на ко. Это означает, что мы хотим, что. Проблема с . Если бы это был объект, можно было бы построить деструктор, удаляющий память по указателю, когда необходимость в объекте отпадает. Это и есть главная идея, реализуемая при использовании . Использование шаблона . Когда объект клас. Таким образом, если адрес, возвращаемый функцией . Для создания объекта . Затем можно использовать обычный синтаксис для шаблона, чтобы создать тот тип указателя, который необходим. Шаблон включает следующий код. Обычный шаблон и . . Это аргумент конструктора . это реальный аргумент, отве. Таким образом, чтобы преобразовать функцию . Включить заголовочный файл . . Заменить указатель. . Удалить оператор . Ниже приведена функция со всеми выполненными изменениями. Например, если . Можно также присвоить значение одного объекта класса . Шаблон позволяет инициализировать объект класса . Некоторые замечания относительно . В шаблоне применяется . Эквивалента класса . В этом случае в библиотеку можно добавить поддер. Еще пример. Используйте объект класса . Такое решение неприменимо здесь, поскольку в итоге программа попытается удалить один и тот же объект дважды. Есть несколько способов избежать такой ситуации. Результатом такого действия будут два указателя, указывающие на два различных объекта, один из которых является копией другого. Только в том случае, когда указатель владеет объектом, его конструктор сможет удалить объект. в Создать . В результате присваивания, напри. И лишь когда прекратит свое существование последний указатель, данный объект будет удален. Подобные стратегии конечно же можно применить и к конструкторам копирования. Каждый подход находит свое применение. Вот пример ситуации, когда использова. Иначе говоря, после того как объект класса . Однако решение этого вопроса зависит уже от конкретной реализации. Интеллектуальные указатели Библиотечный класс . Интеллектуальный указатель является классом, сконструированным таким обра. Поскольку интеллектуальный указатель является объектом класса, для него возможна модификация и расширение свойств обычного указателя. Например, интеллектуальный указатель может вести подсчет ссылок. При использовании интеллектуальных указателей возможно совместное использование од. Когда число объектов, использующих данную величину, станет равным нулю, интеллек. Стандартная библиотека шаблонов Стандартная библиотека шаблонов, или . Контейнер — это элемент данных, похожий на массив, который может содержать несколько значений. они могут содержать значения только одинакового типа. Алгоритмы — это рецепты для выполнения определенных задач, та. Итераторы представляют собой объекты, позволяющие передвигаться по объекту. Функциональные объекты — это объекты, действующие как функции. Алекс Степанов . Она представляет другую парадигму программирования, называемую обобщенным программированием. Существует слишком много информации об . Мы начнем с нескольких специфических примеров. После знакомства с контейнерами, итераторами. Шаблон класса . Вектор содержит набор подобных значений, к которым возможен произвольный доступ. Это значит, что можно использо. Таким образом, можно создать объект класса . Чтобы сделать класс общим, нужно создать его шаблон. Именно это и делается средствами . Для создания объекта шаблона . Кроме того, шаблон класса . Если аргумент в шаблоне опущен, то контейнер по умолчанию будет использовать класс . Этот класс задает применение операторов . В листинге . Данная программа создает два объекта класса . Листинг . Хотя порядок включаемых файлов не должен иметь значения, в д. . Дальше рассмотрим пример, в котором применяется больше методов этого класса. Операции, допустимые при работе с шаблонами . Что же такое итератор. Фактически он может быть и просто указателем, или же объектом, похожим на указатель, для которого опре. Как будет видно в дальнейшем, обобщение указателей до итераторов позволяет . Имя типа для такого итератора образовано из оператора . Например, чтобы объявить итератор для объекта . Теперь давайте выясним, что означает термин элемент за пределами контейнера. Идея та же, что и в случае с нулевым символом, который находится за последним реальным символом С. Если установить итератор на первый элемент контейнера, а затем увеличи. Таким образом, если . Кроме них, шаблон класса . Один из удобных методов с именем . Для этого происходит обращение к механизму управления па. Это значит, что можно применять следующий код. До тех пор пока в распоряжении программы будет достаточный объем памяти, она сможет при необходи. Метод . Важно четко представлять себе, как именно в . те, на которые указывают . Таким образом, диапазон .