Queue
FIFO(First In, First Out) 방식 동작
✅queue container는 deque와 list container에 붙어 사용 가능하다.(vector container 불가능)
✅ vector container가 불가능한 이유 : FIFO 특성상 vector는 앞에서 빼는 동작을 지원해 주지 않기 때문.
✅ 내부적으로 deque, list container로 구현되어 있으나, queue 구조로 동작하도록 멤버 함수를 제공해주는 것이다.
✅ default는 deque container 기반으로 설정
1. queue container 사용법
- < queue > 헤더파일 안에 있다.
- using namespace std; 이름 공간을 사용해주면 편리하다.
2. queue container 생성자와 연산자
ex)
template < typename T, typename Container = deque<T> > class queue;
기본 생성자 형식은 queue< [Data Type]> [변수이름]; 이다.
ex ) queue<int> q;
ex ) queue<string> q;
내부 컨테이너 구조를 바꾸는 생성자 형식은
queue <Data Type], [Container Type] > [변수이름];
3. queue container 멤버 함수
-
value_type& front();
- access first element
- 첫번째 원소에 접근한다. (첫번째 원소 참조)
- 첫번째 원소라는 것은 곧 나올 원소 (pop 하면 나올 원소)
- 들어간지 가장 오래된 원소.
- const value_type& front() const;
- value_type& back();
- access last element
- 마지막 원소에 접근한다. (마지막 원소 참조)
- 마지막 원소라는 것은 방금 들어간 원소 (push를 막 마친 원소)
- 가장 최근에 들어간 원소
- const value_type& back() cont;
-
bool empty() const;- size() 가 0 이면 true.
- check whether container is empty
- 비어있으면 true.
-
size_type size() cont:
- return size
- 원소의 갯수 = size 를 반환한다.
-
void push(const value_type& val);
- Insert a new element
- 초기화된 원소를 queue 안에 집에 넣는다.
- 맨뒤에 원소를 집어 넣는다.
-
void pop()
- Remove the first element
- Remove the oldest element
- 들어간지 가장 오래된 원소를 삭제한다. = 맨 앞에 있는 원소를 삭제한다.
- 반환형 void 이므로 앞의 원소를 참조하려면 front를 사용해야한다.
ex) queue <int, list<int> > q;
ex) queue <string, list<string> > q;
추가 및 삭제
1. push(element) : 큐에 원소를 추가(뒤에)
2. pop() : 큐에 있는 원소를 삭제(앞에)
조회
1. front() : 큐 제일 앞에 있는 원소를 반환
2. back() : 큐 제일 뒤에 있는 원소를 반환
기타
1. empty() : 큐가 비어있으면 true 아니면 false를 반환
2. size() : 큐 사이즈를 반환
#include <iostream>
#include <queue>
using namespace std;
int main(){
// 큐 생성
queue<int> q;
// push
q.push(1);
q.push(2);
q.push(3);
q.push(4);
q.push(5);
q.push(6);
// pop
q.pop();
q.pop();
q.pop();
// front
cout << "front element : " << q.front() << '\n';
// back
cout << "back element : " << q.back() << '\n';
// size
cout << "queue size : " << q.size() << '\n';
// empty
cout << "Is it empty? : " << (q.empty() ? "Yes" : "No") << '\n';
return 0;
}
---------------
이번주 지나고 나서 블로깅 다시 하도록 하겠습니다.
할게 많아서 신경쓸게 너무 많네요 ㅠ
'Language & Framework & GIT > C++' 카테고리의 다른 글
[C++] auto? (80) | 2023.11.23 |
---|---|
[C++] 파일 입출력 간단한 예제(ofstream, ifstream) (85) | 2023.11.10 |
[C++] Main함수 - 매개변수 argc와 argv (64) | 2023.11.10 |
[C++] 스마트 포인터(SMART POINTER) (89) | 2023.10.27 |
[C++]What is _MSC_VER? (102) | 2023.10.17 |
댓글