|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.09.2014, 22:30 | #1 |
Регистрация: 17.08.2014
Сообщений: 5
|
Класс редактирования данных. Нужны советы по реализации
Есть задача: написать класс, позволяющий редактировать данные в памяти. Указатель на данные и их начальный размер передаются в конструктор. Редактирование, на первый взгляд, тривиальное и реализуется тремя методами класса:
Код:
Представим, есть объект класса с переданным ему для редактирования блоком данных. Допустим, у нас произошел последовательный вызов таких методов: Код:
Код:
Код:
Ах, да! Чуть не забыл главное условие: никаких стандартных и, уж тем более, сторонних библиотек. Только "чистый" C++ и WinAPI. |
16.09.2014, 00:32 | #2 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,493
|
Цитата:
http://en.wikipedia.org/wiki/Gap_buffer http://www.drdobbs.com/architecture-...ture/184408975 |
|
16.09.2014, 04:29 | #3 |
Регистрация: 03.02.2014
Сообщений: 7
|
Вам будет очень сложно обогнать функции стандартной библиотеки выполняющие те же задачи. Да и зачем.
|
16.09.2014, 07:25 | #4 |
Регистрация: 17.08.2014
Сообщений: 5
|
Если обогнать можно, то ответ на вопрос "зачем?" очевиден. Если нельзя, тогда незачем.
|
16.09.2014, 07:44 | #5 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,520
|
Почитайте про устройство класса StringBuilder в C#.
|
16.09.2014, 08:01 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
I'm learning to live...
|
|
16.09.2014, 14:39 | #7 | |
Регистрация: 13.08.2014
Сообщений: 4
|
Цитата:
|
|
16.09.2014, 17:59 | #8 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
У вас есть данные, которые нужно обработать. И контейнер,куда набиваются обработчики данных. Когда вы хотите выполнить над данными операцию - на самом деле вы добавляется в контейнер ещё один обработчик: Код:
Например, при добавлении в контейнер очередного метода, можно посмотреть - если новый метод аннулирует действия предыдущего - предыдущий можно удалить из контейнера сразу. Ну и тд и тп. По поводу выигрыша по скорости у memcpy(), это вы конечно, погорячились. Такой подход действительно полезен, и имеет массу полезных свойств. Но это явно не средство оптимизации. И в большинстве случаев работа только замедлится. Главное преимущество подхода - в ряде случаев удобным и простым для программиста образом позволяет реализоваться сложные процессы. |
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужны советы программистов | Clarus | Софт | 4 | 11.08.2012 10:45 |
Нужны советы | Nikolai2010 | Работа с сетью в Delphi | 0 | 05.05.2012 14:02 |
Нужны советы... | Makc19977 | JavaScript, Ajax | 18 | 25.02.2012 18:57 |
Поясните задачу... Дайте советы по её реализации | SWAT92Shtorm | Помощь студентам | 10 | 19.06.2009 19:27 |
Нужны советы по Java | shkipper | Помощь студентам | 1 | 08.04.2009 02:28 |