Data Structure
[Data Structure] Priority_queue(์ฐ์ ์์ ํ) ์ฌ์ฉ๋ฒ
An effort will never betray ๐
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 >๋ก ์ฌ์ฉํ๊ณ ๋ด๋ฆผ์ฐจ์์ด๋ค!! (์ค์)
์ค์ต
๊ฒฐ๊ณผ
- ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด๋ ์์ ํ ๋ถ๋ถ ์์ผ๋ฉด ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.
๋ฐ์ํ