c++ stack 適配器

       看到上一篇博客是2012.12月份的,真是歲月如梭,這也說明本身這一段時間也真是懶惰了,唉,微博玩多了,廢話很少說,上菜。c++

       c++ 順序存儲結構 有三種:vector(數組),list(鏈表),deque(數組和鏈表一種結合,暫不清楚怎麼實現的,應該是數組的變種),說說適配器的狀況,適配器是在存儲結構上實現的一種既定範圍的操做,如隊列,棧等(通常和既定的業務,目的相關)。下面就來實現一下棧的操做,上代碼:數組

     棧的接口頭文件:stack.h函數

    

#ifndef stack_h
#define stack_h
#include <deque>
namespace huals{
template<typename element_type,typename container_type=std::deque<element_type> >
class stack{
public:
stack(){}
template<typename CT>
stack(CT temp):container(temp.begin(),temp.end()){}
bool empty();
std::size_t size();
void pop();
element_type top();
void push(element_type temp);
private:
container_type container;
};
}
#include "stack.cpp"
#endif

 

棧的具體實現:stack.cpp測試

#include <deque>
namespace huals{

template<typename element_type,typename container_type>
bool stack<element_type,container_type>::empty(){
return container.empty();
}

template<typename element_type,typename container_type>
std::size_t stack<element_type,container_type>::size(){
return container.size();
}

template<typename element_type,typename container_type>
void stack<element_type,container_type>::pop(){
if(!container.empty())
container.pop_back();
}

template<typename element_type,typename container_type>

element_type stack<element_type,container_type>::top(){
element_type temp=container.back();
return temp;
}

template<typename element_type,typename container_type>
void stack<element_type,container_type>::push(element_type temp){
container.push_back(temp);
}

}

測試一下,能夠經過,c++仍是很強大,寫這個東西的時候出了個小插曲,就是函數定義和聲明,當函數有默認形參時候,默認形參只能在聲明中寫,定義的時候不要寫,防止重複不一致。spa

相關文章
相關標籤/搜索