π Queue
Queue
π ν(Queue)λ?
- FIFO(First In First Out) ꡬ쑰λ₯Ό λ°λ₯΄λ 컨ν μ΄λ μ΄λν°μ΄λ€.
- μ¦, λ¨Όμ λ€μ΄κ° κ²μ΄ κ°μ₯ λ¨Όμ λκ°λ ꡬ쑰
- 맨 μ(Front)μμ μμλ₯Ό μ κ±°νκ³ λ§¨ λ€(back)μ μμλ₯Ό μ½μ νλ λ°©μ
![]()
π‘ μ£Όμ λ©€λ² ν¨μ
| ν¨μ | μ€λͺ |
|---|---|
| push() | νμ λ€μ μμ μ½μ |
| pop() | νμ μ μμ μ κ±° |
| front() | νμ 맨 μ μμ λ°ν |
| back() | νμ 맨 λ€ μμ λ°ν |
| empty() | νκ° λΉμλμ§ μ¬λΆ λ°ν |
| size() | νμ μλ μμμ κ°μ λ°ν |
π» ν ꡬν μμ
#include <iostream>
#include <queue>
int main() {
std::queue<std::string> q;
// μμ μ½μ
q.push("Hello"); //μ½μ
q.push("World");
q.push("!");
std::cout << "Queue size: " << q.size() << '\n'; //ν¬κΈ° νμΈ
std::cout << "Front: " << q.front() << '\n'; //νμ 맨 μ μμ νμΈ(κ°λ§ νμΈνμ§ μμ λ νμ§μμ)
std::cout << "Back: " << q.back() << '\n'; //νμ 맨 λ€ μμ νμΈ
// λͺ¨λ μμ μ κ±°
while (!q.empty()) {
std::cout << "Popping: " << q.front() << '\n';
q.pop();
}
return 0;
}
π νμ λ΄λΆ ꡬν
- queueλ μ€μ λ΄λΆμ μΌλ‘ deque(κΈ°λ³Έ) λλ listμ κ°μ 컨ν μ΄λλ₯Ό μ¬μ©νκ³ μλ€.
std::queue<int, std::deque<int>> dequeQueue;
std::queue<int, std::list<int>> listQueue;
π‘ ν μ¬μ©μ μ£Όμμ¬ν
- queue.pop()μ λ°ν κ°μ μλ€. μμλ₯Ό μ κ±°νκΈ° μ front() λ back()μΌλ‘ κ° νμΈμ νμμ΄λ€.
- queueλ μμ°¨μ μΈ μ½μ /μμ μ μ΅μ ν λμ΄μμ΄ λ¬΄μμ μ κ·Όμ λΉν¨μ¨μ μ΄λ€.
π 첨μ : queueμ dequeμ μ°¨μ΄μ
- 곡ν΅μ
- λ λ€ μ ν λ°μ΄ν° κ΅¬μ‘°λ‘ μμλ₯Ό μ½μ /μμ νλ λ°©μμ μ΅μ νλμ΄μμ
- FIFO λ°©μμΌλ‘ λ°μ΄ν°λ₯Ό κ΄λ¦¬κ°λ₯
- μ°¨μ΄μ
| κ΅¬λΆ | queue | deque |
|---|---|---|
| λ΄λΆκ΅¬μ‘° | dequeλ₯Ό κΈ°λ³Έ 컨ν μ΄λλ‘ μ¬μ© | μ체μ μΌλ‘ λλΈ μλλ ν ꡬν |
| μ½μ /μμ | μμμ μμ μ λ€μμ μ½μ λ§ κ°λ₯ | μκ³Ό λ€μμ μ½μ /μμ κ°λ₯ |
| λ©€λ² ν¨μ | μ νλ ν¨μ(push(), pop(), front(), back()) | λ λ€μν ν¨μ(push_front(), push_back(), pop_front(), pop_back()) |
| λ©λͺ¨λ¦¬κ΅¬μ‘° | λ¨μ FIFOμ μ΅μ ν | λ©λͺ¨λ¦¬ λΈλ‘κΈ°λ°μΌλ‘ νμ₯ |
| μ¬μ© λͺ©μ | μμ°¨μ μμ (ν) | μλ°©ν₯ μ½μ /μμ κ° νμν μν© |