C++에서 STL 큐 컨테이너 사용

Jinku Hu 2023년10월12일
  1. std::queue를 사용하여 C++에서 STL 큐 개체 선언
  2. size멤버 함수를 사용하여 C++에서 큐 크기 검색
  3. swap멤버 함수를 사용하여 C++에서 두 큐 개체의 내용 교환
C++에서 STL 큐 컨테이너 사용

이 기사에서는 C++에서 STL 큐 컨테이너를 활용하는 방법을 설명합니다.

std::queue를 사용하여 C++에서 STL 큐 개체 선언

C++ 표준 라이브러리는 개체 컬렉션 관리를위한 기본 형식을 제공하는 데 사용되는 여러 컨테이너 클래스를 제공합니다. 그러나 가장 제한된 인터페이스를 사용하여 특별한 요구에 맞게 기본 컨테이너를 변환하는컨테이너 어댑터라고하는 특수 컨테이너가 있습니다.

이러한 컨테이너 어댑터 중 하나는 FIFO (선입 선출) 데이터 구조를 제공하도록 시퀀스 컨테이너를 조정하는std::queue입니다. 기본 기본 컨테이너는SequenceContainer요구 사항을 구현하고back,front,push_backpop_front의 네 가지 멤버 함수를 가져야합니다. 기본 컨테이너의std::dequestd::list함수 만 위의 요구 사항을 충족하므로queue요소를 저장하는 데 사용할 수 있습니다.

#include <iostream>
#include <queue>

using std::cout;
using std::endl;
using std::queue;
using std::string;

template <typename Queue>
void printQueue(Queue q) {
  while (!q.empty()) {
    cout << q.front() << ", ";
    q.pop();
  }
  cout << endl;
}

int main() {
  std::queue<string> q1;
  std::deque<string> deq1 = {"one", "eight", "six", "seven", "eleven", "ten"};

  for (const auto& n : deq1) q1.push(n);
  printQueue(q1);

  std::queue<string> q2(deq1);
  printQueue(q2);

  return EXIT_SUCCESS;
}

출력:

one, eight, six, seven, eleven, ten,
one, eight, six, seven, eleven, ten,

std::queue컨테이너는 기존std::deque개체를 사용하여 초기화 할 수 있습니다. 후자의 초기화를위한 생성자는deque유형의 인수 하나만 필요합니다. 반면에 우리는 대기열 객체를 선언하고push함수를 사용하여 요소를 추가 할 수 있습니다. 위의 코드 스 니펫에서 위의 메소드를 보여주고printQueue함수를 사용하여 큐의 내용을 인쇄합니다.

큐 요소에 대한 반복은 반복기가 액세스 할 수 없기 때문에empty함수를 사용하는while루프로 수행됩니다. 각 루프주기에서front멤버 함수를 사용하여 첫 번째 요소에 액세스하고pop을 사용하여 동일한 요소를 제거합니다. 후자의 작업은 원래 큐 개체를 수정하므로 참조가 아닌 값 인수로 받아들입니다.

size멤버 함수를 사용하여 C++에서 큐 크기 검색

size멤버 함수를 사용하여 큐 오브젝트의 요소 수를 검색 할 수 있습니다. 이 기능은 일정한 시간 성능을 갖습니다.

#include <iostream>
#include <queue>

using std::cout;
using std::endl;
using std::queue;
using std::string;

int main() {
  std::deque<string> deq1 = {"one", "eight", "six", "seven", "eleven", "ten"};

  std::queue<string> q2(deq1);

  cout << "size of the queue = " << q2.size() << endl;

  return EXIT_SUCCESS;
}

출력:

size of the queue = 6

swap멤버 함수를 사용하여 C++에서 두 큐 개체의 내용 교환

swap멤버 함수를 사용하여 두 큐 객체의 요소를 바꿀 수 있습니다. 다른 대기열 객체를 유일한 인수로 취하고 그 내용을 호출자 객체와 교환합니다. 인수 개체는 호출자 대기열의 내용을 할당했습니다.

#include <iostream>
#include <queue>

using std::cout;
using std::endl;
using std::queue;
using std::string;

template <typename Queue>
void printQueue(Queue q) {
  while (!q.empty()) {
    cout << q.front() << ", ";
    q.pop();
  }
  cout << endl;
}

int main() {
  std::queue<string> q1;
  std::deque<string> deq1 = {"one", "eight", "six", "seven", "eleven", "ten"};

  for (const auto& n : deq1) q1.push(n);

  std::queue<string> q2(deq1);
  q2.push(deq1.front());
  q2.push("zero");

  cout << "q1: ";
  printQueue(q1);
  cout << "q2: ";
  printQueue(q2);

  q1.swap(q2);

  cout << "q1: ";
  printQueue(q1);
  cout << "q2: ";
  printQueue(q2);

  return EXIT_SUCCESS;
}

출력:

q1: one, eight, six, seven, eleven, ten,
q2: one, eight, six, seven, eleven, ten, one, zero,
q1: one, eight, six, seven, eleven, ten, one, zero,
q2: one, eight, six, seven, eleven, ten,
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ Queue