// Построение собственной при
Автор admin
Среда, 10 июня 2009 11:32
// Построение собственной приоритетной очереди #include #i nclude #include #i nclude #i nclude #include using namespace std: tempiate class PQV : public vector { Compare comp; public: PQV (Compare cmp – CompareO) : comp(cmp) { make_heap(this->begin(). this->end(). comp): } const T& top() { return this->front(): } void push(const T& x) { this->push_back(x): push_heap(this->begin(). this->end(). comp): } void pop() { pop_heap(this->begin(). this->end(). comp): pop_back(): } }: int mainO { PQV > pqi; srand(time(0)): for(int i – 0; i < 100; pqi.push(rand() % 25): copy(pqi .beginO. pqi.endO. ostream_iterator(cout. ” “)): cout « endl; while(!pqi .emptyO) { cout « pqi .topO « ‘ ‘: pqi .popO: } } ///:- Однако и эта программа ведет себя так же, как предыдущая! На самом деле в базовом векторе хранится не отсортированная последовательность элементов, а структура данных, называемая кучей. Она представляет дерево приоритетной очереди (хранящееся в виде линейной векторной структуры), но при последовательном пер
Комментарии закрыты.
Последние комментарии