-
[Data Structure] Priority_queue(์ฐ์ ์์ ํ) ์ฌ์ฉ๋ฒData Structure 2020. 3. 16. 20:55๋ฐ์ํ
- C++ STL์ค ํ๋์ธ Priority_queue์ ๋ํ ์ค๋ช ์ ๋๋ค.
Priority queue ์ด๋?
- priority queue๋ Compare(์ฐ์ ์์)์ ๋ง๊ฒ ์ค๊ณ๋ container ์ ๋๋ค.
- priority queue๋ heap๊ณผ ์ ์ฌํฉ๋๋ค.
- #include < queue > ๋ฅผ ์ ์ธํด์ผ priority queue๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- prioirty_queue < T, container< T >, compare > ํํ
- ์ ๋๋ฆญํ๊ฒ ๊ตฌํ๋์ด ์ด๋ ํ type์ด๋ผ๋ ์์๊ฐ ๋ ์ ์์ผ๋ฉฐ, ๊ธฐ๋ณธ container๋ vector ์ ๋๋ค.
- compare๋ ๋น๊ต ํด๋์ค๋ก struct๋ฅผ ์๋กญ๊ฒ ๊ตฌํํ์ฌ ๋น๊ต ํด๋์ค๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค. ( ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ด๋ฆผ์ฐจ์ )
๊ธฐ๋ณธ ํจ์
empty( )
- ํ๊ฐ ๋น์ด์๋์ง ํ์ธํ๋ ํจ์
- if priority queue is empty, then return 1 else 0
size( )
- ํ์ ํฌ๊ธฐ๋ฅผ ๋ฐํํ๋ ํจ์
- return size_type (unsigned int )
top( )
- ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ํฐ ์์๋ฅผ ๋ฐํํ๋ ํจ์
- return reference top element
push( element )
- ์ฐ์ ์์ ํ์ ์์๋ฅผ ์ถ๊ฐํ๋ ํจ์
- heap ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋ O(log n)
pop( )
- ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ํฐ ์์๋ฅผ ์ญ์ ํ๋ ํจ์
- heap ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋ O(log n)
swap( queue )
- ์ฐ์ ์์ ํ๋ฅผ ๋ฐ๊พธ๋ ํจ์
์ฃผ์์ฌํญ!!
- Compare์ ๋ค์ด๊ฐ๋ ๊ฒ์ ๋น๊ต ํจ์๊ฐ ์๋ ๋น๊ต ํด๋์ค๊ฐ ๋ค์ด๊ฐ์ผ ํฉ๋๋ค.
- less< int > => ๋น๊ต ํด๋์ค, less< int >( ) => ๋น๊ต ํจ์
- less< int >( )๋ ์ค๋ฆ์ฐจ์์ด๋ค.
- ๊ทธ๋ฌ๋, priority_queue์์ ์ฌ์ฉํ ๊ฒฝ์ฐ๋ less< int >๋ก ์ฌ์ฉํ๊ณ ๋ด๋ฆผ์ฐจ์์ด๋ค!! (์ค์)
์ค์ต
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters#include<iostream> #include<queue> using namespace std; // less<int> (์ค๋ฆ์ฐจ์) ๊ตฌํ struct cmp{ bool operator()(int a,int b){ return a<b; } }; int main(){ priority_queue<int,vector<int>, cmp> pq; priority_queue<int,vector<int>, cmp> pq2; if(pq.empty()){ cout<<"pq๊ฐ ๋น์ด์์ต๋๋ค"<<endl; } pq.push(5); pq.push(1); pq.push(4); pq.push(2); pq.push(3); cout<<"pq์ ํฌ๊ธฐ๋ "<<pq.size()<<" ์ ๋๋ค"<<endl; while(!pq.empty()){ cout<<pq.top()<<endl; pq.pop(); } pq2.push(4); pq2.push(2); pq2.push(3); pq.swap(pq2); cout<<"pq์ pq2๋ฅผ ๋ฐ๊ฟ๋๋ค"<<endl; while(!pq.empty()){ cout<<pq.top()<<endl; pq.pop(); } } ๊ฒฐ๊ณผ
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ฐ์ํ'Data Structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Data Structure] Set ์ฌ์ฉ๋ฒ (0) 2020.03.19 [Data Structure] unordered_map ์ฌ์ฉ๋ฒ (6) 2020.03.16 [Data Structure] pair(ํ์ด) ์ฌ์ฉ๋ฒ (0) 2020.03.13 [Data Stucture] map(๋งต) ์ฌ์ฉ๋ฒ (0) 2020.02.22 [Data Stucture] Queue (ํ) ์ฌ์ฉ๋ฒ (0) 2020.02.22