C++에서 STL 큐 컨테이너 사용
-
std::queue
를 사용하여 C++에서 STL 큐 개체 선언 -
size
멤버 함수를 사용하여 C++에서 큐 크기 검색 -
swap
멤버 함수를 사용하여 C++에서 두 큐 개체의 내용 교환
이 기사에서는 C++에서 STL 큐 컨테이너를 활용하는 방법을 설명합니다.
std::queue
를 사용하여 C++에서 STL 큐 개체 선언
C++ 표준 라이브러리는 개체 컬렉션 관리를위한 기본 형식을 제공하는 데 사용되는 여러 컨테이너 클래스를 제공합니다. 그러나 가장 제한된 인터페이스를 사용하여 특별한 요구에 맞게 기본 컨테이너를 변환하는컨테이너 어댑터
라고하는 특수 컨테이너가 있습니다.
이러한 컨테이너 어댑터 중 하나는 FIFO (선입 선출) 데이터 구조를 제공하도록 시퀀스 컨테이너를 조정하는std::queue
입니다. 기본 기본 컨테이너는SequenceContainer
요구 사항을 구현하고back
,front
,push_back
및pop_front
의 네 가지 멤버 함수를 가져야합니다. 기본 컨테이너의std::deque
및std::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,
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