C++/c++

[STL] ์šฐ์„ ์ˆœ์œ„ ํ priority_queue

Rainbow๐ŸŒˆCoder 2022. 1. 18. 20:27
728x90

์šฐ์„ ์ˆœ์œ„ ํ priority_queue๋Š” ํ์— ์žˆ๋Š” ๋ชจ๋“  ์›์†Œ ์ค‘์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด Top์„ ์œ ์ง€ํ•˜๋„๋ก, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ Heap์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด pop๊ณผ push๋ฅผ ํ•  ๋•Œ ๋งˆ๋‹ค ์ •๋ ฌ๋œ๋‹ค.

 

priority_queue<int> pq; ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ queue์— push๋˜๊ณ  

priority_queue<int, vector<int>, greater<int>> pq; ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ queue์— push๋œ๋‹ค.

 

<๋ฉ”์†Œ๋“œ>

  • push() 
  • pop() top์˜ ์›์†Œ ์ œ๊ฑฐ
  • top() ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ top์— ์žˆ๋Š” ์›์†Œ ์ฆ‰ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜
  • empty() ๋น„์–ด์žˆ์œผ๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜
  • size() ์›์†Œ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ queue์— push

#include <iostream>
#include <queue>
using namespace std;
int main() {
    priority_queue<int> pq;

    pq.push(5);
    pq.push(3);
    pq.push(2);
    pq.push(1);
    pq.push(4);

    while (!pq.empty()) {
        cout << pq.top() << '\n';
        pq.pop();
    }
    return 0;
}

์ถœ๋ ฅ

5
4
3
2
1

 

์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ queue์— push

#include <iostream>
#include <queue>
using namespace std;
int main() {
    priority_queue<int, vector<int>, greater<int>> pq;

    pq.push(5);
    pq.push(3);
    pq.push(2);
    pq.push(1);
    pq.push(4);

    while (!pq.empty()) {
        cout << pq.top() << '\n';
        pq.pop();
    }
    return 0;
}

์ถœ๋ ฅ

1
2
3
4
5
728x90