priority queue stl
Задълбочен поглед върху опашката за приоритет в STL.
В тази явна серия C ++ видяхме стекове и опашки в предишния урок.
В този урок ще обсъдим още един специализиран контейнер в STL, т.е.приоритетна опашка.
какво може да се възпроизвежда .swf файлове
Приоритетна опашка е приемникът на контейнери в STL. Приоритетна опашка е контейнер с елементи, подредени в не намаляващ ред, така че първият елемент винаги да е най-големият елемент в опашката.
=> Посетете тук за пълния списък с уроци за C ++.
Какво ще научите:
Общ преглед
За разлика от нормалната опашка, която изтласква и изскача елемента според реда на FIFO, приоритетната опашка има елементи в не намаляващ ред и има приоритет (фиксиран ред) за всеки елемент
Опашката за приоритет може да се разглежда по подобен начин като структура на данните за „максимална купчина“ в C ++.
Общият синтаксис на приоритетната опашка е:
priority_queue queue_name;
Така че, ако искаме да дефинираме приоритетна опашка от тип int, можем да я дефинираме по следния начин:
priority_queue mypqueue;
Приоритетна опашка - Операции
Нека видим операциите, поддържани от приоритетната опашка по-долу.
- Натиснете: Вмъква елемент в приоритетната опашка. Докато се вмъкват елементи, приоритетът на елементите се запазва.
- Поп: Премахва най-горния елемент от приоритетната опашка.
- Връх: Връща най-горния елемент в опашката с приоритет, т.е. най-големият елемент в опашката с приоритет.
- Празно: Проверява дали опашката за приоритет е празна.
- Размер: Връща размера на опашката с приоритет, т.е. броят на елементите в опашката с приоритет.
Нека напишем програма, която да демонстрира използването на тези функции / операции.
двойно свързан списък c ++
#include #include using namespace std; void displaypq(priority_queue pri_queue) { priority_queue pq = pri_queue; while (!pq.empty()) { cout << ' ' << pq.top(); pq.pop(); } cout << '
'; } int main () { priority_queue mypq; mypq.push(1); mypq.push(3); mypq.push(60); cout<<'
Priority queue after inserting value 60: '; displaypq(mypq); mypq.push(5); cout<<'
Priority queue after inserting value 5: '; displaypq(mypq); mypq.push(10); cout << '
The priority queue mypq is : '; displaypq(mypq); cout << '
mypq.size() : ' << mypq.size(); cout << '
mypq.top() : ' << mypq.top(); cout << '
mypq.pop() : '; mypq.pop(); displaypq(mypq); return 0; }
Изход:
Опашка за приоритет след въвеждане на стойност 60: 60 3 1
Опашка за приоритет след въвеждане на стойност 5: 60 5 3 1
Приоритетната опашка mypq е: 60 10 5 3 1
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
основните права за достъп до файлове в unix са:
Моля, проверете изхода внимателно, за да разберете опашката за приоритет. Първо, натискаме стойности 1,3,60, както е показано в първия ред на изхода. След това натискаме стойността 5 в приоритетната опашка. След това се показва приоритетната опашка. Имайте предвид, че макар стойността 5 да се изтласква след 60, горната част на опашката с приоритет все още е 60
Отново натискаме друга стойност 10 и все пак, върхът на опашката с приоритет е 60. Това е така, защото докато натискате елементи, редът или приоритетът на елементите се поддържат така, че най-големият елемент винаги е в горната част.
Заключение
Всичко беше свързано с изпълнението на приоритетната опашка в STL. В следващия урок ще научим повече за STL контейнери като map и set.
=> Щракнете тук за абсолютната серия за обучение на C ++.