logo

C++ 표준 템플릿 라이브러리(STL)의 큐

대기열은 FIFO(선입선출) 유형의 배열로 작동하는 컨테이너 어댑터 유형입니다. 요소는 뒤쪽(끝)에 삽입되고 앞쪽부터 삭제됩니다. 큐는 캡슐화된 deque 객체를 사용합니다. 목록 (순차적 컨테이너 클래스)를 기본 컨테이너로 사용하여 해당 요소에 액세스할 수 있는 특정 멤버 함수 세트를 제공합니다.

다음은 대기열과 대기열의 다양한 메서드를 보여주는 예입니다.



CPP

자바가 현재 날짜를 가져오는 중






// CPP code to illustrate Queue in> // Standard Template Library (STL)> #include> #include> using> namespace> std;> // Print the queue> void> showq(queue<>int>>gq)> {> >queue<>int>>g = gq;> >while> (!g.empty()) {> >cout <<>' '> << g.front();> >g.pop();> >}> >cout <<>' '>;> }> // Driver Code> int> main()> {> >queue<>int>>퀴즈;> >gquiz.push(10);> >gquiz.push(20);> >gquiz.push(30);> >cout <<>'The queue gquiz is : '>;> >showq(gquiz);> >cout <<>' gquiz.size() : '> << gquiz.size();> >cout <<>' gquiz.front() : '> << gquiz.front();> >cout <<>' gquiz.back() : '> << gquiz.back();> >cout <<>' gquiz.pop() : '>;> >gquiz.pop();> >showq(gquiz);> >return> 0;> }>



>

>

산출

The queue gquiz is : 10 20 30 gquiz.size() : 3 gquiz.front() : 10 gquiz.back() : 30 gquiz.pop() : 20 30>

대기열 방법은 다음과 같습니다.

자바 카운터

다음 함수의 시간 복잡도와 정의는 다음과 같습니다.

대기열::비어 있음() 오(1)
대기열::크기() 오(1)
대기열::장소() 오(1)
대기열::앞() 오(1)
대기열::뒤로() 오(1)
큐::푸시(g) 오(1)
대기열::팝() 오(1)
방법 정의
대기열::비어 있음() 대기열이 비어 있는지 여부를 반환합니다. 대기열이 비어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
대기열::크기() 대기열의 크기를 반환합니다.
큐::스왑() 두 대기열의 내용을 교환합니다. 단, 크기는 다를 수 있지만 대기열의 데이터 유형은 동일해야 합니다.
대기열::장소() 대기열 컨테이너에 새 요소를 삽입하면 새 요소가 대기열 끝에 추가됩니다.
대기열::앞() 큐의 첫 번째 요소에 대한 참조를 반환합니다.
대기열::뒤로() 큐의 마지막 요소에 대한 참조를 반환합니다.
큐::푸시(g) 대기열 끝에 요소 'g'를 추가합니다.
대기열::팝() 대기열의 첫 번째 요소를 삭제합니다.

더 많은 메소드를 위한 C++ 프로그램

C++




k-nn 알고리즘
// CPP code to illustrate Queue operations in STL> // Divyansh Mishra -->divyanshmishra101010> #include> #include> using> namespace> std;> // Print the queue> void> print_queue(queue<>int>>q)> {> >queue<>int>>온도 = q;> >while> (!temp.empty()) {> >cout << temp.front()<<>' '>;> >temp.pop();> >}> >cout <<>' '>;> }> // Driver Code> int> main()> {> >queue<>int>>q1;> >q1.push(1);> >q1.push(2);> >q1.push(3);> >cout <<>'The first queue is : '>;> >print_queue(q1);> > >queue<>int>>q2;> >q2.push(4);> >q2.push(5);> >q2.push(6);> >cout <<>'The second queue is : '>;> >print_queue(q2);> > > >q1.swap(q2);> > >cout <<>'After swapping, the first queue is : '>;> >print_queue(q1);> >cout <<>'After swapping the second queue is : '>;> >print_queue(q2);> > >cout

>

>

산출

The first queue is : 1 2 3 The second queue is : 4 5 6 After swapping, the first queue is : 4 5 6 After swapping the second queue is : 1 2 3 0>

이 코드에서 작업의 시간 및 공간 복잡성은 다음과 같습니다.

print_queue 함수:

시간 복잡도: O(n), 여기서 n은 대기열의 요소 수입니다.
공간 복잡도: O(n), 여기서 n은 대기열의 요소 수입니다.
q1.push(1), q1.push(2), q1.push(3), q2.push(4), q2.push(5), q2.push(6):

시간 복잡도: 각 푸시 작업에 대해 O(1)입니다.
공간 복잡도: O(n), 여기서 n은 두 대기열의 총 요소 수입니다.
q1.스왑(q2):

시간 복잡도: 각 스왑 작업에 대해 O(1)입니다.
공간 복잡도: O(1). 이 작업은 두 큐의 내부 포인터만 교환하기 때문입니다.
q1.빈():

자바 예외 처리

시간 복잡도: O(1), 이 작업은 단순히 대기열이 비어 있는지 확인하기 때문입니다.
공간 복잡도: O(1), 이 작업에 추가 공간이 사용되지 않습니다.
전반적으로 이 코드의 시간 및 공간 복잡성은 일반적인 사용 사례에 적합하고 효율적입니다.

C++ 대기열에 대한 최근 기사