STL stack C++에서 스택 데이터 구조의 기능을 제공합니다.

스택 데이터 구조는 다음과 같습니다. LIFO (Last In First Out) 원칙. 즉, 마지막에 추가된 요소가 먼저 제거됩니다.

스택 데이터 구조

스택에 대해 자세히 알아보려면 다음 자습서를 참조하십시오. Stack Data Structure.

만들다 Stack

C++에서 스택을 생성하려면 먼저 다음을 포함해야 합니다. stack 헤더 파일.

#include <stack>

이 파일을 가져오면 다음을 생성할 수 있습니다. stack 다음 구문을 사용하여:

stack<type> st;

여기, type 이 명령이 스택에 저장하려는 이 명령의 데이터 유형을 나타냅니다. 예를 들어,

// create a stack of integers
 stack<int> integer_stack; 
// create a stack of strings
stack<string> string_stack;

예: C++ STL 스택

#include <iostream>

#include <stack>

using namespace std;

int main {
    // create a stack of strings

stack<string> languages;

    
    // add element to the Stack
    languages.push("C++");
    languages.push("Java");
    languages.push("Python");
    
    // print top element
    cout << languages.top;

    return 0;
}

Output

Python

위의 예에서 우리는 stack 언어로 명명된 문자열 .

여기서 우리가 사용한 push 스택에 요소를 추가합니다. 우리는 그때 사용 top 상위 요소를 표시합니다.

우리는에 대해 더 배울 것입니다 push 그리고 top 나중에 튜토리얼에서.

스택 방법

C++에서, stack 클래스는 스택에서 다양한 작업을 수행하는 다양한 메서드를 제공합니다.

작업 설명
push 스택에 요소를 추가
pop 스택에서 요소를 제거
top 스택의 맨 위에 있는 요소를 반환
size 스택의 요소 수를 반환
empty 보고 true 스택이 비어 있는 경우

스택에 요소 추가

우리는 사용 push 스택에 요소를 추가합니다. 예를 들어,

#include <iostream>

#include <stack>

using namespace std;

int main {

  // create a stack of strings
  stack<string> colors;

// 요소를 스택에 푸시 colors.push(“Red”); colors.push(“Orange”);

  
  cout << "Stack: ";

  // print elements of stack
   while(!colors.empty) {
    cout << colors.top << ", ";
    colors.pop;
  }
 
  return 0;
}

Output

Stack: Orange, Red, 

위의 예에서 색상이라는 문자열 스택을 만들었습니다. 그런 다음 우리가 사용한 push 스택에 요소를 추가합니다.

colors.push("Red");
colors.push("Orange");

스택의 내용을 직접 인쇄하는 대신 while 루프 및 다양한 스택 방법.

while(!colors.empty) {
  cout << colors.top << ", ";
  colors.pop;
}

스택의 모든 요소를 ​​인쇄하려면 해당 스택을 인쇄합니다. top element 그리고 pop(제거) 루프 내부에서. 이 프로세스는 스택이 비워질 때까지 반복적으로 계속됩니다.

우리는에 대해 배울 것입니다 pop, top 그리고 empty 다음 섹션에서.

또한 다음 순서로 요소를 삽입했음을 알 수 있습니다. {“Red”, “Orange”}.

그러나 요소를 인쇄할 때 {“Orange”, “Red”}.

이는 스택이 LIFO 데이터 구조이기 때문입니다. 즉, 마지막에 삽입된 요소가 먼저 검색됨을 의미합니다.

참고: 벡터 또는 다른 컨테이너와 달리 범위를 사용할 수 없습니다. for 루프를 사용하여 스택을 반복합니다. 이는 STL 스택이 표준 스택 데이터 구조처럼 동작하도록 제한적인 액세스를 제공하는 STL 컨테이너 어댑터이기 때문입니다.

요소 제거 Stack

다음을 사용하여 스택에서 요소를 제거할 수 있습니다. pop. 예를 들어,

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

// function prototype this command this command for display_stack utility
void display_stack(stack<string> st);

int main {

  // create a stack of strings
  stack<string> colors;

  // push elements into the stack
  colors.push("Red");
  colors.push("Orange");
  colors.push("Blue");
  
  cout << "Initial Stack: ";
  // print elements of stack
  display_stack(colors);

// 제거 “Blue” 마지막에 삽입된 것처럼 colors.pop;

  
  cout << "Final Stack: ";

  // print elements of stack
  display_stack(colors);
  
  return 0;
}

// utility function to display stack elements
void display_stack(stack<string> st) {

  while(!st.empty) {
    cout << st.top << ", ";
    st.pop;
  }

  cout << endl;
}

Output

Initial Stack: Blue, Orange, Red, 
Final Stack: Orange, Red,

위의 예에서 우리는 pop 스택에서 요소를 제거합니다.

초기에 스택의 내용은 다음과 같습니다. {“Blue”, “Orange”, “Red”}.

그럼 우리는 사용 pop 요소를 제거합니다.

// removes top element
colors.pop 

이렇게 하면 맨 위에 있는 요소가 제거됩니다. stack 즉, 마지막에 삽입된 요소는 “Blue”.

따라서 최종 스택은 {“Orange”, “Red”}.

요소 액세스 Stack

다음을 사용하여 스택 맨 위에 있는 요소에 액세스합니다. top. 예를 들어,

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

int main {

  // create a stack of strings
  stack<string> colors;

  // push element into the stack
  colors.push("Red");
  colors.push("Orange");
  colors.push("Blue");
  
  // get top element

string top = colors.top;

  cout << "Top Element: " << top;
  
  return 0;
}

Output

Top Element: Blue

위의 예에서 색상이라는 문자열 스택을 만들고 다음 요소를 추가했습니다. “Red”, “Orange” 그리고 “Blue”.

우리는 그때 사용 top 최상위 요소에 액세스하려면:

string top = colors.top; 

여기, “Blue” 마지막에 삽입되었으므로 top element.

스택 크기 가져오기

우리는 사용 size 요소의 수를 얻으려면 stack. 예를 들어,

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

int main {

  // create a stack of int
  stack<int> prime_nums;

  // push elements into the stack
  prime_nums.push(2);
  prime_nums.push(3);
  prime_nums.push(5);

// 스택의 크기를 얻는다. int size = prime_nums.size;

  cout << "Size of the stack: " << size;

  return 0;
}

Output

Size of the stack: 3

위의 예에서 우리는 prime_nums라는 정수 스택을 만들고 여기에 세 개의 요소를 추가했습니다.

그럼 우리는 사용 size 스택의 요소 수를 찾으려면 다음을 수행하십시오.

prime_nums.size;

스택에 3개의 요소를 추가했기 때문에 prime_nums.size 보고 3.

스택이 비어 있는지 확인

우리는 사용 empty 스택이 비어 있는지 확인합니다. 이 메서드는 다음을 반환합니다.

  • 1(true)– 스택이 비어있는 경우
  • 0(false)– 스택이 비어 있지 않은 경우

예를 들어,

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

int main {

  // create a stack of double
  stack<double> nums;
  
  cout << "Is the stack empty? ";

// 스택이 비어 있는지 확인 if (nums.empty) {

    cout << "Yes" << endl;
  }
  else {
    cout << "No" << endl;
  }

  cout << "Pushing elements..." << endl;

  // push element into the stack
  nums.push(2.3);
  nums.push(9.7);
 
  cout << "Is the stack empty? ";

// 스택이 비어 있는지 확인 if (nums.empty) {

    cout << "Yes";
  }
  else {
    cout << "No";
  }

  return 0;
}

Output

Is the stack empty? Yes
Pushing elements...
Is the stack empty? No

위의 예에서 우리는 empty 여부를 결정하기 위해 stack 비었다,

if(nums.empty) { // returns false
  cout << "Yes" << end;;
}
else {
  cout << "No" << endl; 
}

처음에는 스택에 요소가 없습니다. 그래서 nums.empty 보고 true.

그런 다음 스택에 요소를 추가했습니다.

다시, 우리는 사용 nums.empty 스택이 비어 있는지 확인합니다. 이번에는 돌아온다. false.

위는 에 대한 정보입니다 C++ 스택 사용 방법 스택에 대해 자세히 알아보려면 [Detailed Guide]. 질문이 있으시면 질문하십시오 fixsy.org 아래 의견에서. 기꺼이 도와드리겠습니다.