stack
수업
최근에 일부 기본 컨테이너 형식에 추가된 요소로만 액세스를 제한하는 템플릿 컨테이너 어댑터 클래스입니다. 이 stack
클래스는 컨테이너에서 작업만 stack
수행되고 있음을 명확히 하는 것이 중요할 때 사용됩니다.
구문
template <class Type, class Container= deque <Type>>
class stack
매개 변수
Type
스택에 저장되는 요소 데이터 형식입니다.
Container
스택을 구현하는 데 사용된 기본 컨테이너의 형식입니다. 기본값은 클래스 deque<Type>
입니다.
설명
스택 개체의 첫 번째 템플릿 매개 변수에 규정된 클래스 Type
의 요소는 동의어 value_type
이며 두 번째 템플릿 매개 변수로 규정된 기본 컨테이너 클래스 Container
의 요소 형식과 일치해야 합니다. Type
해당 형식의 개체를 복사하고 해당 형식의 변수에 값을 할당할 수 있도록 할당할 수 있어야 합니다.
스택에 적합한 기본 컨테이너 클래스에는 ,list
클래스 및 vector
클래스 또는 , push_back
및 pop_back
작업을 back
지원하는 다른 시퀀스 컨테이너가 포함deque
됩니다. 기본 컨테이너 클래스는 제한된 시퀀스 컨테이너 멤버 함수 집합만 공용 인터페이스로 표시하는 컨테이너 어댑터 내에서 캡슐화되어 있습니다.
개체는 stack
클래스 Type
의 요소가 같음과 비교할 수 있고 클래스의 요소가 비교할 수 없는 경우에만 비교 가능한 경우와 비교할 수 없는 경우에만 Type
같음입니다.
이 클래스는
stack
LIFO(Last-in, first-out) 데이터 구조를 지원합니다. 쌓여 있는 접시 더미의 예로 이해할 수 있습니다. 요소(접시)는 기본 컨테이너의 끝에 있는 마지막 요소인 스택의 맨 위에서만 삽입하거나 검사하거나 제거할 수 있습니다. 상위 요소에만 액세스하는 제한은 클래스를 사용하는stack
이유입니다.이 클래스는
queue
FIFO(선점) 데이터 구조를 지원합니다. 은행 창구 직원을 만나려고 줄 서 있는 사람들의 예로 이해할 수 있습니다. 요소(사람)는 줄의 뒤에 추가될 수 있고 줄의 앞에서 제거됩니다. 줄의 앞과 뒤는 모두 검사할 수 있습니다. 이러한 방식으로 전면 및 후면 요소에만 액세스하는 제한은 모피가 클래스를queue
사용하는 이유입니다.클래스는
priority_queue
가장 큰 요소가 항상 맨 위 위치에 있도록 해당 요소를 정렬합니다. 이 클래스는 요소의 삽입과 최상위 요소의 검사 및 제거를 지원합니다. 나이, 키 또는 기타 조건을 기준으로 정렬된 줄을 선 사람들의 예로 이해할 수 있습니다.
멤버
생성자
속성 | 설명 |
---|---|
stack |
비어 있거나 기본 컨테이너 개체의 복사본인 stack 을 생성합니다. |
Typedef
속성 | 설명 |
---|---|
container_type |
stack 에서 조정할 기본 컨테이너를 제공하는 형식입니다. |
size_type |
stack 에서 요소 수를 표현할 수 있는 부호 없는 정수 형식입니다. |
value_type |
stack 에 있는 요소로 저장된 개체의 형식을 나타내는 형식입니다. |
함수
속성 | 설명 |
---|---|
empty |
stack 이 비어 있는지를 테스트합니다. |
pop |
stack 의 맨 위에 있는 요소를 제거합니다. |
push |
stack 의 맨 위에 요소를 추가합니다. |
size |
stack 에 있는 요소 수를 반환합니다. |
top |
stack 의 맨 위에 있는 요소에 대한 참조를 반환합니다. |
container_type
조정할 기본 컨테이너를 제공하는 형식입니다.
typedef Container container_type;
설명
이 형식은 템플릿 매개 변수 Container
의 동의어입니다. 세 가지 C++ 표준 라이브러리 시퀀스 컨테이너 클래스( vector
클래스, list
클래스 및 기본 클래스 deque
)는 모두 개체의 기본 컨테이너 stack
로 사용되어야 하는 요구 사항을 충족합니다. 이러한 요구 사항을 충족하는 사용자 정의 형식도 사용할 수 있습니다.
자세한 Container
내용은 수업 항목의 설명 섹션을 stack
참조하세요 .
예시
선언하고 사용하는 container_type
방법에 대한 stack::stack
예제는 예제를 참조하세요.
empty
스택이 비어 있는지 테스트합니다.
bool empty() const;
Return Value
true
스택이 비어 있으면 false
스택이 비어 있지 않으면
예시
// stack_empty.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
// Declares stacks with default deque base container
stack <int> s1, s2;
s1.push( 1 );
if ( s1.empty( ) )
cout << "The stack s1 is empty." << endl;
else
cout << "The stack s1 is not empty." << endl;
if ( s2.empty( ) )
cout << "The stack s2 is empty." << endl;
else
cout << "The stack s2 is not empty." << endl;
}
The stack s1 is not empty.
The stack s2 is empty.
pop
stack의 가장 윗부분의 요소를 제거합니다.
void pop();
설명
구성원 함수를 적용하려면 스택이 비어 있지 않아야 합니다. 스택 맨 위 위치에는 가장 최근에 추가한 요소가 배치되며, 이 요소가 컨테이너 끝의 마지막 요소가 됩니다.
예시
// stack_pop.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
stack <int> s1, s2;
s1.push( 10 );
s1.push( 20 );
s1.push( 30 );
stack <int>::size_type i;
i = s1.size( );
cout << "The stack length is " << i << "." << endl;
i = s1.top( );
cout << "The element at the top of the stack is "
<< i << "." << endl;
s1.pop( );
i = s1.size( );
cout << "After a pop, the stack length is "
<< i << "." << endl;
i = s1.top( );
cout << "After a pop, the element at the top of the stack is "
<< i << "." << endl;
}
The stack length is 3.
The element at the top of the stack is 30.
After a pop, the stack length is 2.
After a pop, the element at the top of the stack is 20.
push
스택의 맨 위에 요소를 추가합니다.
void push(const Type& val);
매개 변수
val
스택의 맨 위에 추가되는 요소입니다.
설명
스택 맨 위 위치에는 가장 최근에 추가한 요소가 배치되며, 이 요소가 컨테이너 끝의 마지막 요소가 됩니다.
예시
// stack_push.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
stack <int> s1;
s1.push( 10 );
s1.push( 20 );
s1.push( 30 );
stack <int>::size_type i;
i = s1.size( );
cout << "The stack length is " << i << "." << endl;
i = s1.top( );
cout << "The element at the top of the stack is "
<< i << "." << endl;
}
The stack length is 3.
The element at the top of the stack is 30.
size
스택의 요소 수를 반환합니다.
size_type size() const;
Return Value
스택의 현재 길이입니다.
예시
// stack_size.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
stack <int> s1, s2;
stack <int>::size_type i;
s1.push( 1 );
i = s1.size( );
cout << "The stack length is " << i << "." << endl;
s1.push( 2 );
i = s1.size( );
cout << "The stack length is now " << i << "." << endl;
}
The stack length is 1.
The stack length is now 2.
size_type
스택에서 요소 수를 표현할 수 있는 부호 없는 정수 형식입니다.
typedef typename Container::size_type size_type;
설명
이 형식은 스택에 의해 조정되는 기본 컨테이너의 size_type
과 동일한 의미입니다.
예시
선언하고 사용하는 size_type
방법에 대한 size
예제는 예제를 참조하세요.
stack
비어 있거나 기본 컨테이너 개체의 복사본인 스택을 생성합니다.
stack();
explicit stack(const container_type& right);
매개 변수
right
생성된 스택이 복사본이 되는 컨테이너입니다.
예시
// stack_stack.cpp
// compile with: /EHsc
#include <stack>
#include <vector>
#include <list>
#include <iostream>
int main( )
{
using namespace std;
// Declares stack with default deque base container
stack <char> dsc1;
//Explicitly declares a stack with deque base container
stack <char, deque<char> > dsc2;
// Declares a stack with vector base containers
stack <int, vector<int> > vsi1;
// Declares a stack with list base container
stack <int, list<int> > lsi;
// The second member function copies elements from a container
vector<int> v1;
v1.push_back( 1 );
stack <int, vector<int> > vsi2( v1 );
cout << "The element at the top of stack vsi2 is "
<< vsi2.top( ) << "." << endl;
}
The element at the top of stack vsi2 is 1.
top
stack의 가장 윗부분의 요소에 대한 참조를 반환합니다.
reference top();
const_reference top() const;
Return Value
스택의 맨 위에 있는 컨테이너의 마지막 요소에 대한 참조입니다.
설명
구성원 함수를 적용하려면 스택이 비어 있지 않아야 합니다. 스택 맨 위 위치에는 가장 최근에 추가한 요소가 배치되며, 이 요소가 컨테이너 끝의 마지막 요소가 됩니다.
반환 값 top
이 할당 const_reference
된 경우 개체를 stack
수정할 수 없습니다. 반환 값 top
이 할당 reference
된 경우 개체를 stack
수정할 수 있습니다.
예시
// stack_top.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
stack <int> s1;
s1.push( 1 );
s1.push( 2 );
int& i = s1.top( );
const int& ii = s1.top( );
cout << "The top integer of the stack s1 is "
<< i << "." << endl;
i--;
cout << "The next integer down is "<< ii << "." << endl;
}
The top integer of the stack s1 is 2.
The next integer down is 1.
value_type
스택에 있는 요소로 저장된 개체의 형식을 나타내는 형식입니다.
typedef typename Container::value_type value_type;
설명
이 형식은 스택에 의해 조정되는 기본 컨테이너의 value_type
과 동일한 의미입니다.
예시
// stack_value_type.cpp
// compile with: /EHsc
#include <stack>
#include <iostream>
int main( )
{
using namespace std;
// Declares stacks with default deque base container
stack<int>::value_type AnInt;
AnInt = 69;
cout << "The value_type is AnInt = " << AnInt << endl;
stack<int> s1;
s1.push( AnInt );
cout << "The element at the top of the stack is "
<< s1.top( ) << "." << endl;
}
The value_type is AnInt = 69
The element at the top of the stack is 69.