Использование библиотечных структур данных со своими собственными алгоритмами. Эффективность программы ручной кодировки. Изучение основных компонентов библиотеки. Расширение средств C . Последовательности, которая поддерживает двунаправленные итераторы.
Аннотация к работе
Библиотека содержит пять основных видов компонентов: алгоритм (algorithm): определяет вычислительную процедуру. контейнер (container): управляет набором объектов в памяти. итератор (iterator): обеспечивает для алгоритма средство доступа к содержимому контейнера. функциональный объект (function object): инкапсулирует функцию в объекте для использования другими компонентами. адаптер (adaptor): адаптирует компонент для обеспечения различного интерфейса. Если программные компоненты сведены в таблицу как трехмерный массив, где одно измерение представляет различные типы данных (например, int, double), второе измерение представляет различные контейнеры (например, вектор, связный список, файл), а третье измерение представляет различные алгоритмы с контейнерами (например, поиск, сортировка, перемещение по кругу) , если i, j и k - размеры измерений, тогда должно быть разработано i* j *k различных версий кода. Когда пользователь хочет объединить вектор и список (оба - шаблонные классы в библиотеке) и поместить результат в заново распределенную неинициализированную память, то это может быть выполнено так: vector a; где begin() и end() - функции-члены контейнеров, которые возвращают правильные типы итераторов или указателе-подобных объектов, позволяющие merge выполнить задание, а raw_storage_iterator - адаптер, который позволяет алгоритмам помещать результаты непосредственно в неинициализированную память, вызывая соответствующий конструктор копирования. многих случаях полезно перемещаться через потоки ввода-вывода таким же образом, как через обычные структуры данных. } работа выполняется алгоритмом remove_copy_if, который читает целые числа одно за другим, пока итератор ввода не становится равным end-of-stream (конец-потока) итератору, который создается конструктором без параметров.