Project

General

Profile

Тестовое задание "C. Строки"

Разработать С класс, представляющий собой строку символов. Класс обеспечивает алфавитное сравнение строк, присваивание и пр. стандартные операции.
Стока может хранится внутри объекта класса в двух вариантах:

  • Вар А. Хранимого указатель на последовательность символов во вне объекта, известной длины, не терминированного 0. При этом объект не отвечает за факт существования, освобождение, выделение этой памяти и пр.
  • Вар В. Хранимого объекта-строки. В этом случае хранимый объект отвечает за управление памятью для хранимой строки

Класс предназначен для использования при обработке текстовых данных и позволяет увеличить эффективность данных операций за счет минимизации динамического выделения памяти и копирования участков памяти.

Требования к классу:

  1. В качестве хранимой строки (Вар В) используется класс MFC CString / CStringW
  2. Наличие конструкторов, позволяющих явно определить при конструировании тип хранения А или В.
  3. Оператор присваивания делает левый объект идентичным правому по типу хранения и по содержимому.
  4. Возможность алфавитного сравнения объектов между собой, вне зависимости от типа хранения, а также с объектами CString и указателями на терминированные нулем строки
  5. Оператор сравнения для использования в сортированных контейнерах STL
  6. Метод для присвоения значения строки без смены типа хранения. При этом объект сохраняет указанную ему тем или иным способом строку согласно своему текущему типу хранения (А или В)
  7. Метод получения указателя на хранимую строку
  8. Метод проверки на пустоту
  9. Метод получения размера в символах
  10. Наличие стандартного конструктора (без параметров)
  11. Поведение объекта, созданного стандартным конструктором, идентично поведению объекта, инициализированного пустой строкой

Требования к реализации

  1. Разработка в Microsoft Visual studio 2005/2008
  2. Реализация в виде проекта MFC C
  3. Использование только стандартных библиотек: MFC, STL, CRT
  4. Темплейтная реализация класса, позволяющая определить два класса с типами строк: байтовыми (char) и UTF-16 (wchar_t)
  5. Managed C (CLI) не используется
  6. Высокая эффективность (скорость выполнения) сравнения, присваивания, конструирования и пр. операций.
  7. Отсутствие ассемблерного кода
  8. Максимальное избегание динамического выделения памяти
  9. Наличие встроенного тестового примера использования, демонстрирующего выполнение основных операций
  10. Простота реализации и читабельность кода

Add picture from clipboard (Maximum size: 742 MB)