stl의 Queue사용하기
우선 큐를 사용하려면 다음과 같이 queue를 포함시켜야 합니다.
#include <queue>
queue에 있는 멤버함수 목록은 다음과 같습니다.
(생성자) | 큐 생성자 |
empty | 컨테이너가 비어 있는지 테스트 |
size | 큐의 요소수를 리턴함. |
front | 맨 앞에 있는 요소에 접근 |
back | 맨 뒤에 있는 요소에 접근 |
push | 큐의 끝에 요소를 삽입한다. |
emplace(c++11) | 큐의 끝에 요소를 삽입한다. |
pop | 큐의 처음에 있는 요소를 빼낸다. |
swap(c++11) | 매개변수에 있는 큐와 멤버변수를 호출한 큐의 데이터 바꿈. |
사용예제
empty
선언 형태
bool empty() const;
Return value
bool값이 return type인 것을 확인가능합니다.
사용법
q.empty()
size
선언 형태
size_type size() const;
Return value
size_type : 멤버 유형 size_type은 부호없는 정수 유형입니다.
사용법
int size = q.size();
front
선언 형태
reference& front();
const_reference& front() const;
멤버 유형 reference 및 const_reference는 동일한 이름을 가진 기본 컨테이너 유형의 별칭(alias)입니다.
Return value
큐의 다음 요소에 대한 참조(refrence)입니다.
사용법
std::cout << q.front();
back
선언 형태
reference& back();
const_reference& back() const;
Return value
큐의 마지막 요소에 대한 참조입니다.
사용법
std::cout << q.back();
emplace
선언 형태
template <class... Args> void emplace (Args&&... args);
Return value
없습니다.
사용법 (push와 같은 역할)
std::queue<std::string> myqueue;
myqueue.emplace ("First sentence");
myqueue.emplace ("Second sentence")
push와 emplace의 차이를 알고 싶어서 이것저것 확인하다가 선언형태를 확인했었습니다. const value_type&의 뜻은 위 링크를 보면 확인할 수 있는데, 요약하자면 alias하는 기능인 것 같습니다. 선언형태를 보고 차이점을 알고 싶었는데, 아직 어려운 부분이라 우선 넘기기로 했습니다. 대신 emplace에 대해 잘 설명해놓은 블로그 링크를 첨부합니다.
pop
선언 형태
void pop();
Return value
없습니다.
사용법
q.pop();
swap
선언 형태
void swap (queue& x) noexcept(/*see below*/);
Return value
없습니다.
사용법
q1.swap(q2)
사용예제2
#include <iostream>
#include <queue>
#include <string>
int main()
{
std::queue<int> q;
// Generic되어 있기에 이와 같이 string처럼 다른 타입도 사용가능함.
std::queue<std::string> strq;
q.push(1);
q.push(2);
q.push(3);
while (q.empty() != true) {
std::cout << q.front() << std::endl;
q.pop();
}
return 0;
}