stack 소스 코드 분석

2211 단어 stl
stack 은 선진 적 인 데이터 구조 로 하나의 출구 만 있 고 추가, 제거, 최상 위 요 소 를 얻 을 수 있 습 니 다. 그러나 최상 위 를 제외 하고 stack 의 다른 요 소 를 액세스 할 수 있 는 다른 방법 이 없습니다. 다시 말 하면 스 택 에 요 소 를 옮 겨 다 니 는 행 위 를 허용 하지 않 습 니 다.요 소 를 stack 으로 내 놓 는 작업 을 pop 이 라 고 합 니 다. stack 계 의 한 단계 용기 가 모든 작업 을 완성 하기 때문에 특정한 인 터 페 이 스 를 수정 하여 다른 모습 을 형성 하 는 성질 을 가 진 사람 을 adapter (어댑터) 라 고 부 르 기 때문에 STL stack 은 container (용기) 로 분류 되 지 않 고 container adapter 로 분 류 됩 니 다.
/ / 다음은 stack 의 소스 코드 입 니 다.
template  >
class stack{
	//   __STL_NULL_TMPL_AGRS    < >
friend bool operator ==__STL_NULL_TMPL_ARGS(const stack&,const stack&);
friend bool operator< __STL_NULL_TMPL_ARGS(const stack&,const stack&);
public:
	typedef typename Sequence::value_type value_type;
	typedef typename Sequence::size_type  size_type;
	typedef typename Sequence::reference reference;
	typedef typename Sequence::const_reference const_reference;
protected:
	Sequence c;//    
public:
	//      Sequence c   ,  stack   
	bool empty() const{return c.empty();}
	size_type size()const{return c.size();}
	reference top(){return c.back();}
	const_reference top()const{return c.back();}
	//deque     ,stack    .   
	void push(const value_type& x){c.push_back(x);}
	void pop(){c.pop_back();}

};
template 
bool operator==(const stack&x,const stack&y)
{
	return x.c==y.c;
}
template 
bool operator&x,const stack&y)
{
	return x.c

stack 모든 요소 의 출입 은 '선진 후 출' 의 조건 에 부합 되 어야 합 니 다. stack 상단 의 요소 만 외부 에서 사용 할 수 있 습 니 다. stack 은 방문 기능 을 제공 하지 않 고 교체 기 를 제공 하지 않 습 니 다. 아래 에 응용 인 스 턴 스 를 제공 하지 않 습 니 다.
/*
  deque  ,list           .   stack               empty,size,back,push_back,pop_back.
    ,list   .  ,  list            ,          stack,       
*/
#include
#include
#include
#include
using namespace std;
int main(){
	stack >istack;
	istack.push(1);
	istack.push(3);
	istack.push(5);
	istack.push(7);
	cout<

좋은 웹페이지 즐겨찾기