Тестовое задание "C. Строки"¶
- Table of contents
- Тестовое задание "C. Строки"
Разработать С класс, представляющий собой строку символов. Класс обеспечивает алфавитное сравнение строк, присваивание и пр. стандартные операции.
Стока может хранится внутри объекта класса в двух вариантах:
- Вар А. Хранимого указатель на последовательность символов во вне объекта, известной длины, не терминированного 0. При этом объект не отвечает за факт существования, освобождение, выделение этой памяти и пр.
- Вар В. Хранимого объекта-строки. В этом случае хранимый объект отвечает за управление памятью для хранимой строки
Класс предназначен для использования при обработке текстовых данных и позволяет увеличить эффективность данных операций за счет минимизации динамического выделения памяти и копирования участков памяти.
Требования к классу:
- В качестве хранимой строки (Вар В) используется класс MFC CString / CStringW
- Наличие конструкторов, позволяющих явно определить при конструировании тип хранения А или В.
- Оператор присваивания делает левый объект идентичным правому по типу хранения и по содержимому.
- Возможность алфавитного сравнения объектов между собой, вне зависимости от типа хранения, а также с объектами CString и указателями на терминированные нулем строки
- Оператор сравнения для использования в сортированных контейнерах STL
- Метод для присвоения значения строки без смены типа хранения. При этом объект сохраняет указанную ему тем или иным способом строку согласно своему текущему типу хранения (А или В)
- Метод получения указателя на хранимую строку
- Метод проверки на пустоту
- Метод получения размера в символах
- Наличие стандартного конструктора (без параметров)
- Поведение объекта, созданного стандартным конструктором, идентично поведению объекта, инициализированного пустой строкой
Требования к реализации
- Разработка в Microsoft Visual studio 2005/2008
- Реализация в виде проекта MFC C
- Использование только стандартных библиотек: MFC, STL, CRT
- Темплейтная реализация класса, позволяющая определить два класса с типами строк: байтовыми (char) и UTF-16 (wchar_t)
- Managed C (CLI) не используется
- Высокая эффективность (скорость выполнения) сравнения, присваивания, конструирования и пр. операций.
- Отсутствие ассемблерного кода
- Максимальное избегание динамического выделения памяти
- Наличие встроенного тестового примера использования, демонстрирующего выполнение основных операций
- Простота реализации и читабельность кода