Напишите функцию itos(int), возвращающую строковое представление целого числа.
Метка: STL
Функция ввода.
Представьте, что считывание строк средней длинны (от 5 до 25 символов) из потока cin — самое узкое место в вашей системе. Напишите функцию ввода, читающей такие строки с максимально возможной скоростью. Допустимо организовать интерфейс функции в угоду быстродействию (даже за счет некоторого неудобства в использовании). Сравните результат с реализацией операции >> для типа string.
Производительность функций complete_name().
Сравните быстродействие трех функций complete_name() из параграфа 20.3.9 и параграфа 20.3.10. Попробуйте сами написать функцию complete_name(), работающую наиболее производительно. Ведите список ошибок, выявленных на этапах программирования и тестирования.
Оценка скорости копирования строк stirng.
Оцените скорость копирования строк типа string. Как ваша конкретная реализация строкового класса оптимизирует копирование?
Класс String для коротких строк.
Напишите класс String, который оптимизирован для коротких строк, содержащих не более 8 символов. Сравните его по быстродействию со стандартным string и String из параграфа 11.12. Возможно ли написать комбинированную версию строкового класса, сочетающего преимущества класса коротких строк и общего класса строк?
Перегрузка isalpha(), isdigit() и т.д.
Определите перегруженные версии isalpha(), isdigit() и т.д. , чтобы они могли корректно работать с char, unsigned char и signed char.
Универсальный класс для работы с текстами.
Подумайте как можно спроектировать идеальный класс для универсальной работы с текстами. Назовите его Text. Какими он будет обладать возможностями? Какую нагрузку на реализацию вызовут ваши «идеальные» средства?
Библиотека регулярных выражений.
Воспользуйтесь библиотекой регулярных выражений для реализации операции поиска по образцу над классом String, не имеющим ассоциированный с ним класс Substring.
Нехватающие операции для работы с РВ.
Каких операций вам не хватает для работы с регулярными выражениями в примере параграф 20.6[7]? Выявите их и добавьте. Какова наглядность ваших операций для работы с регулярными выражениями по сравнению с традиционными? Сравните скорость вашего решения по сравнению со стандартными средствами.
Функция find().
Напишите функцию find(), находящую в строке первое вхождение регулярного выражения. Используйте ? для обозначения «любого символа» , * — для обозначения любого числа символов, не отвечающих следующей части регулярного выражения, и [abc] — для обозначения любого символа из тех, что указаны в квадратных скобках (здесь это a,b,c). Другие символы должны совпадать буквально. Например, find(s,»name:») возвращает…