|
Программирование >> Операторы преобразования типа
else { cout \ А11\ not found in \ si endl; Результат выполнения программы выглядит так; hallo otto ; false hallo == hALLo : true index of All in hallo ; 1 3a дополнительными сведениями об интернационализации обращайтесь к главе 14. Эффективность Стандарт не указывает, как должен бьггь реализован строковый класс, - он лишь определяет интерфейс строкового класса. В зависимости от выбранного концептуального подхода и приоритетов реализации могут существенно различаться по скорости работы и расходованию памяти. Если вы добиваетесь оптимизации по скорости, используйте строковый класс, основанный на ковдепции подсчета ссылок. Подсчет ссылок ускоряет копирование и присваивание, поскольку реализация копирует и присваивает не содержимое строк, а только ссылки (на с. 226 описан класс умного указателя, реализующий подсчет ссылок для произвольного типа). Хотя при подсчете ссылок передача по константной ссылке может вам не потребоваться, для обеспечения должной гибкости и переносимости программ такую передачу нужно обеспечить. Строки и векторы Строки имеют много общего с векторами, и это не удивительно - оба типа контейнеров обычно реализуются в виде динамических массивов. Строку можно рассматривать как специализированную разновидность вектора с символьными элементами. Более того, строки могут использоваться как контейнеры STL (см. с. 480). Впрочем, интерпретировать строку как специализированный вектор опасно, поскольку между ними существует немало принципиальных различий, главное из которых - предназначение контейнера. О Векторы предназначены для работы с элементами контейнеров, а не с контейнером в целом. По этой причине реализации векторов оптимизируются для эффективного выполнения операций с отдельными элементами. О Строки предназначены для работы с целым контейнером (строкой), поэтому для них оптимизируются операции присваивания и передачи всего контейнера. Различия в целях обьшно приводят к совершенно разным реализациям. Например, строки часто реализуются на базе подсчета ссылок, а для векторов такая реализация вообще нехарактерна. Впрочем, вектор может использоваться как обычная С-строка. За подробностями обращайтесь на с. 164. Строение строковых классов В этом разделе обозначение string соответствует фактическому строковому классу - string, wstring или любой другой специализированной версии класса basic string<>. Обозначение char относится к фактическому типу символов, то есть char для string и wchar t для wstring. Смысл других типов и значений, выделенных курсивом, зависит от определений типа символов и класса трактовок (см. с. 664). Определения типов и статические значения string::traits type О Тип трактовок символов. О Второй параметр шаблона класса basic string. О Для типа string - эквивалент char traits<cliar>. string: :value type О Тип символов. О Эквивалент traits type::char type. О Для типа string - эквивалент cliar. string::size type О Беззнаковый целый тип для значений размеров и индексов. О Эквивалент allocator type::size type. О Для типа string - эквивалент size t. string: :clifference type О Знаковый целый тип для значений разности. О Эквивалент allocator type;:difference type. О Для типа string - эквивалент ptrdiff t. string::reference О Тип ссылки на символ. О Эквивалент allocator type::reference. О Для типа string - эквивалент charSu string: :const reference О Тип константной ссылки на символ. О Эквивалент allocator type::const reference. О Для типа string - эквивалент const char&. string: :pointer О Тип указателя на символ. О Эквивалент allocator type::pointer. О Для типа string - эквивалент char*. string::const pointer О Тип константного указателя на символ. О Эквивалент ailocator type::const pointer. О Для типа string - эквивалент const char*. string: iterator О Тип итераторов. О Конкретный тип зависит от реализации. О Для типа string обычно используется char*. string: iterator О Тип константных итераторов. О Конкретный тип зависит от реализации. О Для типа string обычно используется const char*. string:;reverse iteratorz О Тип обратных итераторов. О Эквивалент reverse iterator<iterator>. string::reverse iterator О Тип константных обратных итераторов. О Эквивалент reversejterator<constjterator>. static const sizejiype string::npos О Специальное значение, означающее безрезультатный поиск или все оставшиеся символы . о Беззнаковое целое значение, инициализируемое значением -1. О Использование значения npos требует осторожности. За подробностями обращайтесь к с. 478. Операции создания, копирования и уничтожения строк string: ;string () О Констрзотор по умолчанию. О Создает пустую строку. string::string (const string, str) О Копирующий конструктор. о Создает новую строку как копию str.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |