언어/Basic C++

[Basic C++] #67_queue

Hardii2 2023. 6. 16. 11:12

 

[Basic C++] #67_queue

 

C++의 STL에서 제공하는 queue 컨테이너에 대해 알아보겠습니다.

 


 

Overview

 

  1. 개념
  2. 선언
  3. 멤버 함수
  4. 예제

 

#0. 개념

1. 큐

 

[자료 구조]#0_선형 자료구조

[자료 구조] #0_선형 자료구조 선형 자료구조에 대해 알아보겠습니다. Overview 개념 스택 큐 원형 큐 배열 벡터 리스트 이중 연결 리스트 #0. 개념 1. 선형 자료구조? 선형 자료구조는 데이터를 일렬

webddevys.tistory.com

 

  • 큐는 먼저 삽입된 데이터가 먼저 삭제되는 FIFO(First In First Out) 혹은 선입선출 방식으로 작동합니다.
  • 데이터 목록의 한쪽 끝에서는 데이터의 삽입만 이루어지며, 다른 한쪽 끝엔서는 데이터의 삭제 작업만 이루어집니다.

 

#1. 선언

1. 헤더

#include <queue>

 

2. 선언 및 초기화

#include <iostream>
#include <queue>
#include <vector>
using namespace std;

int main()
{
	// #1. 기본 생성자
	queue<int> q1;

	// #2. 복사 생성자
	queue<int> q2(q1);

	// #3. deque 활용 범위 기반 초기화
	vector<int> v = { 1,2,3 };
	queue<int> q3(deque<int>(v.begin(), v.end()));

	// #4. deque 활용 원소 수, 값 초기화
	queue<int> q4(deque<int>(3, 1));

}

 

#2. 멤버 함수

1. 접근

#include <iostream>
#include <queue>
using namespace std;

int main()
{

	queue<int> q;

	q.push(1);
	q.push(2);
	q.push(3);

	// #1. front()	: 큐의 가장 앞에 있는 원소에 접근
	cout << q.front() << endl;

	// #2. back()	: 큐의 가장 마지막 원소에 접근
	cout << q.back() << endl;

	// #3. size()	: 큐에 들어있는 원소의 개수
	cout << q.size() << endl;

}

 

2. 삽입, 제거

#include <iostream>
#include <queue>

int main() {
    std::queue<int> myQueue;

    // #1. 삽입
    myQueue.push(10);
    myQueue.push(20);
    myQueue.push(30);

    // #2. 제거
    myQueue.pop();

    return 0;
}

 

3. 그 외 멤버 함수

#include <iostream>
#include <queue>

int main() {
	std::queue<int> queue1;
	std::queue<int> queue2;

	// #1. empty()	: 큐가 비어있는지 확인하는 함수
	if (queue1.empty()) {
		std::cout << "Queue is empty." << std::endl;
	}

	// #2. emplace(): 임시 값, 우측 값을 삽입하는 함수
	queue1.emplace(10);
	queue1.emplace(20);
	queue1.emplace(30);

	// #3. swap()	: 다른 queue 컨테이너와 swap하는 함수
	queue1.swap(queue2);

	return 0;
}

 

#3. 예제

1.  STL의 queue 컨테이너 활용 문제

 

[BOJ알고리즘, C++]#2164_카드2, 선형 자료구조, 큐

[BOJ알고리즘, C++]#2164_카드 2 BOJ 알고리즘 문제 풀이, 2164번 카드 2 문제 queue 컨테이너를 활용하는 방법에 대해 알아보겠습니다. Overview 문제 풀이 코드 #0. 문제 1. 문제 #1. 풀이 1. 큐 [자료 구조]#0_

webddevys.tistory.com

 

2. 요세푸스 문제

 

[BOJ알고리즘, C++]#11866_요세푸스 문제0, 선형 자료구조, 큐

[BOJ알고리즘, C++]#11866_요세푸스 문제 0 BOJ 알고리즘 문제 풀이, 11866번 요세푸스 문제 0 queue 컨테이너를 활용하는 방법에 대해 알아보겠습니다. Overview 문제 풀이 코드 #0. 문제 1. 문제 #1. 풀이 1.

webddevys.tistory.com