Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Некоторые сложные контейнеры (например, строки) предъявляют большие требования к своим элементам. Для символов требуется и возможность сравнения, и наличие спецсимволов для конца строки и конца файла, и многое другое.
В то же время хочется иметь возможность применять эти контейнеры для разных типов символов (например, Unicode строк). Знание об алгоритмах сравнения символов, символе конца строки, символе конца файла и других необходимо отделить от конкретного типа символов (чтобы мы могли использовать в контейнере даже тот тип символа, автор которого об этой возможности не думал).
Для этого создается специальный тип, определяющий для другого типа некоторый набор применяемых к нему операций. Этот тип похож на тип компаратора, но отвечает не только за сравнение, но и за многое другое. Он обеспечивает все операции, необходимые другому типу (например, для того, чтобы быть элементом сложного контейнера).
Например, тип char_traits обеспечивает для другого типа все операции, необходимые для того, чтобы быть символом (элементом строки и значением, читаемым из потока). Мы можем определить для любого типа элемента тип traits с тем же набором методов, что и у char_traits, и использовать этот тип элемента в роли символа.
Дата публикования: 2015-01-13; Прочитано: 194 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!