priority queue stl
Детаљни увид у приоритетни ред у СТЛ-у.
У овој експлицитној Ц ++ серији видели смо стекове и редове у претходном упутству.
У овом упутству ћемо разговарати о још једном специјализованом контејнеру у СТЛ-у, тј. О приоритетном реду.
како прогласити флоат у јави
Приоритетни ред је усвајање контејнера у СТЛ. Приоритетни ред је контејнер који има елементе поредане по ненамањујућем редоследу тако да је први елемент увек највећи елемент у реду.
=> Посетите овде за комплетну листу водича за Ц ++.
Шта ћете научити:
Преглед
За разлику од нормалног реда који потискује и искаче елемент према ФИФО редоследу, приоритетни ред има елементе у опадајућем редоследу и има приоритет (фиксни редослед) за сваки елемент
Редослед приоритета може се гледати на сличан начин као структура података „мак хеап“ у Ц ++.
бесплатни софтвер за поправак рачунара за Виндовс 10
Општа синтакса реда приоритета је:
priority_queue queue_name;
Дакле, ако желимо да дефинишемо приоритетни ред типа инт, можемо га дефинисати на следећи начин:
priority_queue mypqueue;
Редослед приоритета - операције
Погледајмо операције подржане редом приоритета у наставку.
- Притисни: Умеће елемент у приоритетни ред. Приликом уметања елемената задржава се приоритет елемената.
- Поп: Уклања највиши елемент из реда приоритета.
- Врх: Приказује највиши елемент у реду приоритета, тј. Највећи елемент у реду приоритета.
- Празно: Проверава да ли је приоритетни ред празан.
- Величина: Враћа величину реда приоритета, тј. Број елемената у реду приоритета.
Напишимо програм који ће показати употребу ових функција / операција.
#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
Редослед приоритета мипк је: 60 10 5 3 1
мипк.сизе (): 5
мипк.топ (): 60
мипк.поп (): 10 5 3 1
Молимо пажљиво проверите излаз да бисте разумели приоритетни ред. Прво гурамо вредности 1,3,60 као што је приказано у првом реду излаза. Затим гурамо вредност 5 у приоритетни ред. Након тога се приказује приоритетни ред. Имајте на уму да иако је вредност 5 потиснута након 60, врх реда приоритета је и даље 60.
Поново притиснемо још једну вредност 10 и даље, врх реда приоритета је 60. То је зато што док се гурају елементи, редослед или приоритет елемената се одржава тако да је највећи елемент увек на врху.
уник заповеда интервјуисање питања и одговора за искусне
Закључак
Све се овде односило на примену приоритетног реда у СТЛ-у. У нашем следећем упутству сазнаћемо више о СТЛ контејнерима попут мапе и сета.
=> Кликните овде за апсолутну Ц ++ серију тренинга.