Подскажите контейнер
От: Страж  
Дата: 17.07.08 21:29
Оценка:
Как лучше реализовать внутренний буффер (массив unsigned char) класса?
Требуемые операции: добавление в конец, извлечение из начала, удаление элементов из начала, возвращение указателя на данные (как std::string::c_str() ). Можно и свое написать, но может есть практичный контейнер для этого?

Интересуют только средства стандартной библиотеки.

Спасибо
Re: Подскажите контейнер
От: Vamp Россия  
Дата: 17.07.08 21:32
Оценка:
Судя по запрошенной функциональности — типичный deque.
Да здравствует мыло душистое и веревка пушистая.
Re: Подскажите контейнер
От: Bell Россия  
Дата: 18.07.08 02:42
Оценка:
Здравствуйте, Страж, Вы писали:

С>Как лучше реализовать внутренний буффер (массив unsigned char) класса?

С>Требуемые операции: добавление в конец, извлечение из начала, удаление элементов из начала,
Для этой цели подойдут deque и list

С>возвращение указателя на данные (как std::string::c_str() ).

Это умеет только vector.
Вышеперчисленные операции он тоже умеет, но удаление из начала будет дорогим. Хотя если данных не очень много — для unsigned char все может быть достаточно резво.

С>Можно и свое написать, но может есть практичный контейнер для этого?

С>Интересуют только средства стандартной библиотеки.
С>Спасибо

В общем я бы попробовал для начала вектор, а там посмотреть, что на это скажет профайлер.
Любите книгу — источник знаний (с) М.Горький
Re[2]: Подскажите контейнер
От: Bell Россия  
Дата: 18.07.08 02:54
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Судя по запрошенной функциональности — типичный deque.


А как же насчет

...возвращение указателя на данные (как std::string::c_str() )....

?
Любите книгу — источник знаний (с) М.Горький
Re[2]: Подскажите контейнер
От: rusted Беларусь  
Дата: 18.07.08 06:47
Оценка: 2 (2)
Здравствуйте, Bell, Вы писали:

B>Вышеперчисленные операции он тоже умеет, но удаление из начала будет дорогим.


вместо явного удаления из начала можно дополнительно завести свой begin и просто сдвигать его.
Re[3]: Подскажите контейнер
От: Страж  
Дата: 18.07.08 08:12
Оценка:
Спасибо всем ответившим
Re[3]: Подскажите контейнер
От: Vamp Россия  
Дата: 18.07.08 12:47
Оценка:
B>А как же насчет
B>...возвращение указателя на данные (как std::string::c_str() )....
Не учел.
Да здравствует мыло душистое и веревка пушистая.
Re: Подскажите контейнер
От: minorlogic Украина  
Дата: 18.07.08 13:11
Оценка: +1
Адаптор написать над вектором.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re: Подскажите контейнер
От: seimur  
Дата: 18.07.08 17:55
Оценка:
Здравствуйте, Страж, Вы писали:

С>Как лучше реализовать внутренний буффер (массив unsigned char) класса?

С>Требуемые операции: добавление в конец, извлечение из начала, удаление элементов из начала, возвращение указателя на данные (как std::string::c_str() ). Можно и свое написать, но может есть практичный контейнер для этого?

С>Интересуют только средства стандартной библиотеки.


С>Спасибо


strstream или stringstream не подойдёт?
Загляните в <sstream>, думаю это то что вам надо!!!
Теоретически нет разницы между теорией и практикой, но на практике она есть
Re: Подскажите контейнер
От: max-maxtor Россия www.rsdn.ru
Дата: 19.07.08 15:28
Оценка:
Здравствуйте, Страж, Вы писали:

С>Как лучше реализовать внутренний буффер (массив unsigned char) класса?

С>Требуемые операции: добавление в конец, извлечение из начала, удаление элементов из начала, возвращение указателя на данные (как std::string::c_str() ). Можно и свое написать, но может есть практичный контейнер для этого?

С>Интересуют только средства стандартной библиотеки.


С>Спасибо


queue
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.