Завершите Basic_substring из параграфа 20.3.13 и интегрируйте его с типом String, который перегружает операцию () со смыслом «взять подстроку», а во всем остальном эквивалентен типу string.
Метка: STL
Версия back_inserter.
Напишите версию back_inserter() (параграф 19.2.4), работающую с basic_string.
basic_string раздумья о функциях в не класса.
В классе basic_string множество функций членов. Какие из них можно было бы определить глобально (вне класса), не потеряв в эффективности и удобстве записи?
Средства для работы со строками — не согласованы во всем.
Средства для работы со строками не во всем согласованы. Например, вы можете присвоить символ типа char строке типа string, но вы не можете инициализировать string символом. Составьте список подобного рода рас согласований. Как их можно было бы устранить? Какие новые проблемы могут при этом возникнуть?
Различия между vector и basic_string.
Перечислите различия между vector и basic_string. Какие различия существенны?
Функция конкатенации двух строк.
Напишите функцию, принимающую в качестве аргументов две строки типа string, и возвращающую конкатенацию этих строк с точкой посредине. Например, для file и write функция должна вернуть file.write. Напишите такую же функцию для работы с С-строками, опираясь только на библиотечные функции языка С, такие как malloc() или strlen(). Сравните две версии. Какие могут быть разумные критерии…
Реализация vector с применением allocator.
Реализуйте vector, применяя аллокаторы, а не операции new и delete.
Реализация Pool_alloc.
Завершите или реализуйте с самого начала Pool_alloc (параграф 19.4.2) так, чтобы обеспечивались все возможности стандартного аллокатора allocator (параграф 19.4.1) из стандартной библиотеки. Сравните производительности Pool_alloc и allocator, чтобы решить, стоит ли использовать Pool_alloc в вашей системе.
Дескрипторный класс.
Спроектируйте и реализуйте дескрипторный класс, предоставляющий прокси-интерфейс к контейнеру. Его реализация должна базироваться на указателе на контейнер плюс реализация контейнерных операций с проверкой диапазона.
Checked_iter.
Завершите Checked_iter (параграф 19.3).