stacks queues stl
예제를 통해 STL의 스택 및 대기열 구현을 알아보십시오.
스택과 큐는 본질적으로 매우 기본적인 STL의 두 컨테이너입니다. 그들은 소프트웨어 프로그래밍에서 광범위한 응용 프로그램을 가진 가장 간단한 컨테이너입니다.
이 자습서에서는 STL에서 이러한 두 컨테이너의 세부 구현을 볼 수 있습니다. 또한 스택 및 큐에서 지원하는 다양한 작업을 예제와 함께 살펴볼 것입니다.
학습 내용 :
스택
STL의 스택 컨테이너는 컨테이너 어댑터 유형입니다. C ++에서 스택 데이터 구조를 복제하는 데 사용됩니다. 스택 컨테이너는 요소가 한쪽 끝에 삽입되고 같은 끝에서도 삭제되는 요소 집합입니다.
이 공통적 인 추가 및 삭제 지점을 '스택의 최상위'라고합니다.
스택의 그림 표현은 아래와 같습니다.
위의 표현에서 볼 수 있듯이 스택은 Top of the stack이라는 동일한 끝에서 요소가 추가 및 삭제되는 컨테이너입니다.
추가와 삭제가 같은 끝에서 일어나기 때문에 스택 컨테이너는 LIFO (last in, first out) 유형의 작업이라고 말할 수 있습니다. 즉, 먼저 추가 된 요소가 마지막으로 삭제되는 요소가됩니다.
스택 컨테이너를 구현하려면 프로그램에 헤더를 포함해야합니다.
#include
스택 컨테이너의 일반 선언 구문은 다음과 같습니다.
stack stackName;
스택 작업
다음으로 STL의 스택 컨테이너가 지원하는 다양한 작업에 대해 설명하겠습니다.
- 푸시 : 푸시 작업은 스택에 요소를 삽입하는 데 사용됩니다. 이 작업은 항상 스택 맨 위에 요소를 추가합니다.
정수 유형의 빈 스택 mystack을 고려하십시오. .
다음으로 요소 1을 스택에 추가하겠습니다.
그런 다음 요소 3을 스택에 추가합니다.
표현에 따르면 푸시 작업의 결과로 스택 맨 위에 요소가 추가됩니다. 푸시 작업을 수행 할 때마다 스택 크기가 1 씩 증가합니다.
- 팝 : 팝 작업은 스택에서 요소를 제거하는 데 사용됩니다. 제거 된 요소는 스택 맨 위를 가리키는 요소입니다. 팝 작업의 결과로 스택 크기가 1만큼 줄어 듭니다.
팝 작업이 어떻게 생겼는지 살펴 보겠습니다.
위에서 이미 2 개의 요소를 푸시 한 스택 mystack을 고려하십시오.
이제 pop () 함수를 호출하겠습니다. 이 호출이 실행되면 스택 맨 위에있는 요소가 제거되고 'Top'은 아래와 같이 다음 요소를 가리 킵니다.
다시 pop ()을 호출하면 다음 요소 (이 경우 1)가 제거되어 빈 스택이 생성됩니다.
SQL 시나리오 기반 질문 및 답변
- 상단 : 스택의 최상위 요소를 반환합니다.
- 빈 : 스택이 비어 있는지 확인합니다.
- 크기: 스택의 크기, 즉 스택의 요소 수를 반환합니다.
다음은 작업을 더 잘 이해하기위한 스택 구현의 예입니다.
#include #include using namespace std; void printStack(stack stk) { while (!stk.empty()) { cout << ' ' << stk.top(); stk.pop(); } cout << '
'; } int main () { stack oddstk; oddstk.push(1); oddstk.push(3); oddstk.push(5); oddstk.push(7); oddstk.push(9); cout << 'The stack is : '; printStack(oddstk); cout << '
Size of stack: ' << oddstk.size(); cout << '
Top of stack: ' << oddstk.top(); cout << '
oddstk.pop() : '; oddstk.pop(); printStack(oddstk); cout<<'
Another pop(): '; oddstk.pop(); printStack(oddstk); return 0; }
위의 예는 스택을 생성하는 푸시 작업을 명확하게 보여줍니다. 두 번의 연속 팝 작업 후 스택도 표시됩니다.
따라서 우리는 STL에서 스택과 그 작업을 보았습니다. 또한이 튜토리얼에서는 'Queue'라는 또 다른 간단한 STL 컨테이너의 세부 구현을 볼 수 있습니다.
열
큐는 STL의 또 다른 컨테이너로 매우 간단하고 유용합니다. 큐 컨테이너는 C ++에서 큐 데이터 구조의 복제본입니다. 스택과 달리 큐 컨테이너에는 앞과 뒤의 두 끝이 있습니다.
요소는 대기열의 앞쪽에서 삭제되는 동안 뒤쪽의 대기열에 추가됩니다. 일반적으로 대기열은 FIFO (선입 선출) 유형의 배열을 사용합니다.
프로그램에서 큐 컨테이너를 구현하려면 코드에 헤더를 포함해야합니다.
#include
큐 선언의 일반적인 구문은 다음과 같습니다.
소프트웨어 개발 수명주기 단계 pdf
대기열 queue_name;
다음과 같이 큐 컨테이너를 선언합니다.
Queue myqueue;
대기열 작업
이제 대기열에서 지원하는 다양한 작업을 볼 수 있습니다.
- 푸시: 함수‘push’는 대기열의 끝에 즉 대기열의 뒤쪽에 요소를 추가합니다.
- 팝: 'pop'함수는 대기열의 첫 번째 요소, 즉 대기열의 맨 앞에있는 요소를 제거합니다.
큐의 푸시 및 팝 기능을 이해하겠습니다.
myqueue 위에 선언 된 빈 대기열을 고려하십시오. 이제 우리는 작업으로 대기열에 짝수 2를 푸시합니다.
myqueue.push (2);
이제 대기열은 다음과 같습니다.
다음으로 'myqueue.push (4)'를 호출하여 '4'를 대기열에 추가합니다.
이제 큐는 아래와 같이 보입니다.
위에서 볼 수 있듯이 요소는 뒤쪽 또는 뒤쪽에서 대기열로 푸시됩니다.
이제 myqueue에서 작업을 시작하겠습니다.
myqueue.pop ();
보시다시피 pop ()이 호출되면 큐 앞의 요소가 제거됩니다. 이는 대기열에 입력 된 첫 번째 요소가 대기열에서 나오는 첫 번째 요소임을 의미합니다.
- 앞: 이 함수는 대기열의 첫 번째 요소에 대한 참조를 반환합니다.
- 뒤: 뒤로는 대기열의 마지막 요소에 대한 참조를 반환합니다.
- 빈: 큐가 비어 있는지 확인합니다.
- 크기: 큐의 크기, 즉 큐의 요소 수를 반환합니다.
다음은 큐 컨테이너에서 사용하는 작업을 보여주는 예제 프로그램입니다.
#include #include using namespace std; void printQueue(queue myqueue) { queue secqueue = myqueue; while (!secqueue.empty()) { cout << ' ' << secqueue.front(); secqueue.pop(); } cout << '
'; } int main() { queue myqueue; myqueue.push(2); myqueue.push(4); myqueue.push(6); myqueue.push(8); cout << 'The queue myqueue is : '; printQueue(myqueue); cout << '
myqueue.size() : ' << myqueue.size(); cout << '
myqueue.front() : ' << myqueue.front(); cout << '
myqueue.back() : ' << myqueue.back(); cout << '
myqueue.pop() : '; myqueue.pop(); printQueue(myqueue); return 0; }
산출:
대기열 myqueue : 2 4 6 8
myqueue.size () : 4
myqueue.front () : 2
myqueue.back () : 8
myqueue.pop () : 4 6 8
위와 같이 먼저 큐 컨테이너를 선언합니다. 그런 다음 푸시 연산을 사용하여 처음 4 개의 짝수를 추가합니다. 그 후 큐에서 요소를 팝하고 변경된 큐를 표시합니다.
결론
이것으로 스택과 큐에 대한이 튜토리얼을 끝냈습니다. 이미 언급했듯이 STL에있는 가장 간단한 컨테이너입니다. 대기열 컨테이너의 또 다른 변형은 '우선 순위 대기열'로 알려져 있습니다.
다음 튜토리얼에서는 STL의 Priority Queue에 대해 자세히 설명합니다 !!
=> 처음부터 C ++를 배우려면 여기를 방문하십시오.