STL中stack小結

(1)爲了運用stack,你必須包含頭文件<stack>:#include<stack>
  
(2)在頭文件中stack定義以下:
namespace std{
      template < class T, class Container = deque<T> >
      class stack;
}
第一個 template 參數表明元素型別,帶有默認值的第二個參數用來定義stack內部存放元素所用的實際容器,缺省採用deque。之因此採用deque而非vector,是由於deque移除元素時會釋放內存而且沒必要在從新分配時複製所有元素。實際上stack只是很單純的把各項操做轉化爲內部容器的對應調用,你能夠使用任何序列式容器來支持stack,只要它們支持back(),push_back(),pop_back()等動做就好了。
  
(3)stack的各項操做:
stack::stack()默認構造函數,產生一個空stack
  
explicit stack::stack( const Container& cont)
產生一個stack,並以容器cont內的元素爲初值(複製)
  
size_type stack::size() const
返回元素個數
  
bool stack::empty() const
判斷stack是否爲空
  
void stack::push( const value_type& elem)
將elem的副本插入stack使其成爲新的第一個元素
  
value_type& stack::top()
const value_type& stack::top() const
返回stack的棧頂元素,調用者必須確保stack不爲空不然多是未定義的行爲
  
void stack::pop()
移除stack的棧頂元素,調用者必須確保stack不爲空不然多是未定義的行爲
  
bool comparison( const stack& st1, const stack& st2)
返回兩個同型的stack的比較結果comparison能夠是下面各個運算之一:operator ==,operator !=,operator <,operator >,operator <=,operator >=
相關文章
相關標籤/搜索