![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: 1 Всего: 8 |
Суть вот чем. Надо без всякого STL реализовать добавление, удаление элементов. Добавление будет идти в конец последовательности, удаление - из начала. STL как я понял не катит, поскольку vector будет тормозить, переписывая при каждом удалении из начала весь массив, а список не годится - надо бегать по последоваетльности часто и быстро.
Я хочу реализовать это дело функциями malloc и remalloc. Выделять malloc'ом типа int prt=malloc(N*sizeof(myclass*)) память, и при удалении элемента с начала realloc(ptr+sizeof(myclass*), (N-1)*sizeof(myclass*)), при добавлении аналогично добавлять. Вопрос - разумно ли это, и насколько быстра функция malloc? Добавлено @ 22:32 Все это буде происходить на WM_TIMER, поэтому быстрота исключительно важна. -------------------- Поехали! |
|||
|
||||
| LPBOY |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Здесь подойдет std::deque, или еще лучше std::queue. --------------------
Каждый человек по-своему прав, а по-моему нет... |
|||
|
||||
| Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: 1 Всего: 8 |
Нельзя дать краткое описание этих классов? msdn сейчас нету под рукой.
-------------------- Поехали! |
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
msdn.microsoft.com
-------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: 1 Всего: 8 |
Да только что там был.
Подтвердите, пожалуйста, что добавление вперед массива будет происходжить столь же быстро, что и в конец, и что скорость не зависит от размера вектора, и в частности не будет при каждой вставке перекопирования элементов. -------------------- Поехали! |
|||
|
||||
| LPBOY |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 12.7.2005 Репутация: 20 Всего: 20 |
Да, в этом и смысл двусторонней очереди (deque). - Вставка/удаление элемента в начало/конец происходит быстро (за константное время) без перемещения элементов. А queue это более специализированный адаптер, добавление(push) элементов происходит в конец, а удаление(pop) из начала. По умолчанию queue реализуется на основе дека (std::deque), поэтому операции push/pop происходят также быстро. --------------------
Каждый человек по-своему прав, а по-моему нет... |
|||
|
||||
| Амортизатор |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 17.4.2005 Где: в Караганде Репутация: 1 Всего: 8 |
Спасибо, это информация мне очень помогла.
-------------------- Поехали! |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Т.е. не чаще чем раз в 10 mc... Уверяю тебя по сравнению с вызовами WinAPI, в тем паче GDI - все выделения-развыделения памяти полная ерунда... разве что каждый твой элемент по пол-мегабайта весит... Это я к чему: не ищи проблем там где их нет. Однако совет LPBOY насчет использования деки или очереди совершенно разумный. -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |