Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » heap @ c++ stl

Ответить
Настройки темы
heap @ c++ stl
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Что такое heap в C++ STL и как его можно эффективно использовать?
Когда он лучше, чем max_element() или sort()?

Отправлено: 12:11, 14-03-2005

 

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


>> Что такое heap в C++ STL
Шаблон такой, емнип.

>> как его можно эффективно использовать?
? %)
Если любите с шаблонами работать, почему бы его и не использовать (хоть эффективно, хоть неэффективно)?

Отправлено: 13:07, 14-03-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclang98/HTML/sample_heap_(STL_Sample).asp

Отправлено: 13:08, 14-03-2005 | #3

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


я имею ввиду make_heap, sort_heap. Их примеры я видел, но так и не понял, почему сортировка или поиск максимального элемента хуже.
По поводу эффективного использования, например: для быстрой вставки/удаления в середине контейнера эффективней использовать список, чем вектор. В этом смысле.

Отправлено: 13:15, 14-03-2005 | #4

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Цитата:
хоть эффективно, хоть неэффективно
Даже обидно становится. Я стараюсь при прочих равных условиях повышать эффективность

Отправлено: 13:26, 14-03-2005 | #5


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


pva
>> Я стараюсь при прочих равных условиях повышать эффективность
Дык это, хорошо. Считайте, что у меня такой неуклюжий юмор.

>> но так и не понял, почему сортировка или поиск максимального элемента хуже.
Почему хуже? Кто сказал, что хуже? Чем хуже? Вы же не объясняете... Остаётся догадываться... Любит человек шаблоны - пишет всё через heap. Ему говорят - так не эффективно, хочешь, пойдём с секундомером замеряем скорость работы- через heap и через qsort. А он говорит - зато у меня текст проги короче. И что? Кто прав?

Отправлено: 18:30, 14-03-2005 | #6

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


1. Текст проги получается длиннее (если речь о сортировке или макс.элементе)
Код: Выделить весь код
// heap

vector<int> v(10);
// fill ...
make_heap(v.begin(), v.end());
sort_heap(v.begin(), v.end())

// sort

vector<int> v(10);
// fill ...
sort(v.begin(), v.end());
2. В хелпе написано количество операций в среднем необходимых для выполнения действия (3*n для make_heap, n*log(n)/log(2) для sort_heap, n*log(n)/log(2) для sort). Если делать heap, а потом его сортировать, то количество операций немного превосходит sort. Если делать heap и искать максимальный элемент, то количество операций превосходит max_element втрое.

3. Не думаю, что коммитет по стандартизации C++ "просто так" включил heap в библиотеку. Может он что-то делает очень быстро, но я не знаю что..., а значит не знаю, зачем он нужен.

Отправлено: 12:33, 18-03-2005 | #7

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Нашёл описание на руском языке в ссылках на документацию. Это нужно для имитации priority queue на векторе. Понятно, что сортировка на heap хуже, чем специализированный алгоритм. Поэтому в примерах только pop_back демонстрируется.

Отправлено: 11:10, 06-04-2005 | #8


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


pva
Можно ссылку глянуть? А то я тут как раз написал очередь с приоритетами... А скорость у меня не просто критична, а апупеть как критична (нужно отрабатывать кучу udp-пакетов).

Отправлено: 19:49, 06-04-2005 | #9

pva pva вне форума Автор темы

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


http://anatolix.naumen.ru/Books/cplusplus
Там много прикольных статей; советую:
Exceptional C++, More Exceptional C++ (Решение сложных задач на C++)

Отправлено: 11:35, 11-04-2005 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » heap @ c++ stl

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - STL Stack delight Программирование и базы данных 1 10-12-2009 07:37
C/C++ - STL .::.DIMA.::. Программирование и базы данных 3 23-04-2009 08:07
C/C++ - STL работа со стеком alextrs Программирование и базы данных 2 28-04-2008 18:41
STL и multimap Crew Программирование и базы данных 5 28-11-2004 18:23
C++Builder4 & C++stl pva Программирование и базы данных 2 12-10-2004 07:32




 
Переход