Skip to content

Умная строка

Реализовать класс SmartString с

операциями: получение / изменение элемента по индексу, изменение длины строки, получения длины строки.

конструкторами:
- без параметров (пустая строка)
- преобразования из «сишной» строки
- с указанием длины

и следующей семантикой копирования:
при копировании копия и оригинал разделяют область памяти, выделенную под символы.
При попытке модификации строка, разделяющая с кем-либо область памяти, должна создавать свою копию области памяти.
Пример:

  1. SmartString s1 = "abc", s2(s1);  
  2. s3 = s2;  
  3. s3.setAt(1, 'B');  

Реализация не должна использовать стандартную библиотеку C++ (но может использовать стандартную библиотеку C).

В этом задании и всех последующих реализация подразумевает «качественный код»:
– единообразное именование (CamelCase – типы, camelCase – поля, методы, их параметры)
– использование const, инкапсуляции
– отсутствие copy-paste
– продуманный «дизайн» классов, прототипов методов и т.д.

Работа будет оценена.
Номинации:
- Лучший код (одна!)
- «Принято!»
- Не сдано / сделано плохо
- Плагиат

Срок сдачи 00:00 24 февраля 2011 г.

Categories: 205, C++, ejudge, ДЗ.

Comment Feed

Один комментарий

  1. В примере
    s3.at(1) = ‘B’;
    заменено на:
    s3.setAt(1, ‘B’);

    (для того, чтобы отличать случаи «чтения» и «записи» элемента строки)

    Спасибо за ценное замечание!

    Сергей Герасимов22.02.2011 @ 10:16



Some HTML is OK

or, reply to this post via trackback.