![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 17.08.2014
Сообщений: 5
|
![]()
Есть задача: написать класс, позволяющий редактировать данные в памяти. Указатель на данные и их начальный размер передаются в конструктор. Редактирование, на первый взгляд, тривиальное и реализуется тремя методами класса:
Код:
Представим, есть объект класса с переданным ему для редактирования блоком данных. Допустим, у нас произошел последовательный вызов таких методов: Код:
Код:
Код:
Ах, да! Чуть не забыл главное условие: никаких стандартных и, уж тем более, сторонних библиотек. Только "чистый" C++ и WinAPI. |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
![]() Цитата:
http://en.wikipedia.org/wiki/Gap_buffer http://www.drdobbs.com/architecture-...ture/184408975 |
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 03.02.2014
Сообщений: 7
|
![]()
Вам будет очень сложно обогнать функции стандартной библиотеки выполняющие те же задачи. Да и зачем.
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 17.08.2014
Сообщений: 5
|
![]()
Если обогнать можно, то ответ на вопрос "зачем?" очевиден. Если нельзя, тогда незачем.
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
![]()
Почитайте про устройство класса StringBuilder в C#.
|
![]() |
![]() |
![]() |
#6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#7 | |
Регистрация: 13.08.2014
Сообщений: 4
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#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 |