Класс редактирования данных. Нужны советы по реализации

Автор Тема: Класс редактирования данных. Нужны советы по реализации  (Прочитано 3257 раз)

Оффлайн VaNeK373Автор темы

  • Бизнес оценка: (0)
  • Дебютант
  • *
  • СПАСИБО: 0
  • Сообщений: 5
  • Карма: 0

Оффлайн VaNeK373Автор темы

  • Дебютант
  • *
Есть задача: написать класс, позволяющий редактировать данные в памяти. Указатель на данные и их начальный размер передаются в конструктор. Редактирование, на первый взгляд, тривиальное и реализуется тремя методами класса:
Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.Казалось бы, все просто: выделяй память, заменяй, удаляй, добавляй... Однако в процессе редактирования данных промежуточные итоги мне не нужны - требуется только конечный результат. Поэтому возникла мысль не изменять данные при каждом вызове методов, а только лишь сохранять информацию об изменениях. А когда будет запрошен результат, тогда уж и формировать его.

Представим, есть объект класса с переданным ему для редактирования блоком данных. Допустим, у нас произошел последовательный вызов таких методов:
Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.На деле, такая запись аналогична записи:
Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.Поэтому реальное изменение данных "на лету" не оптимально, если учесть, что промежуточный результат (как я уже писал) мне не интересен. "Компоновкой" получившегося должен заниматься отдельный метод, возвращающий результат всей работы объекта:
Код:
Только зарегистрированные пользователи могут видеть код. Пожалуйста, войдите или зарегистрируйтесь.Осталось только придумать, как хранить и обрабатывать информацию о поступивших изменениях. Вот с этим-то у меня и затык. Ничего, что очевидно выигрывает у memcpy() и memmove() по скорости и ресурсам, в голову не приходит. Поделитесь своими мыслями.

Ах, да! Чуть не забыл главное условие: никаких стандартных и, уж тем более, сторонних библиотек. Только "чистый" C++ и WinAPI.


Оффлайн Райкоукен

  • Бизнес оценка: (0)
  • Рекрут
  • *
  • СПАСИБО: 0
  • Сообщений: 13
  • Карма: 0

Оффлайн Райкоукен

  • Рекрут
  • *
Вам будет очень сложно обогнать функции стандартной библиотеки выполняющие те же задачи. Да и зачем.

Оффлайн VaNeK373Автор темы

  • Бизнес оценка: (0)
  • Дебютант
  • *
  • СПАСИБО: 0
  • Сообщений: 5
  • Карма: 0

Оффлайн VaNeK373Автор темы

  • Дебютант
  • *
Если обогнать можно, то ответ на вопрос "зачем?" очевиден. Если нельзя, тогда незачем.


 

Похожие темы

  Тема / Автор Ответов Последний ответ
20 Ответов
6432 Просмотров
Последний ответ 07-09-2011, 13:13:02
от Dolphinka
10 Ответов
4158 Просмотров
Последний ответ 09-05-2012, 07:59:20
от DarkAngel
13 Ответов
3772 Просмотров
Последний ответ 02-10-2012, 16:14:54
от Dolphinka
4 Ответов
1213 Просмотров
Последний ответ 26-01-2014, 23:50:00
от AMGH
2 Ответов
1280 Просмотров
Последний ответ 08-04-2014, 20:26:29
от Juiseed