c++ stack 适配器

看到上一篇博客是2012.12月份的,真是岁月如梭,这也说明自己这一段时间也真是懒惰了,唉,微博玩多了,废话不多说,上菜。

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++还是很强大,写这个东西的时候出了个小插曲,就是函数定义和声明,当函数有默认形参时候,默认形参只能在声明中写,定义的时候不要写,防止重复不一致。

原文链接: https://www.cnblogs.com/huals/p/3141212.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/92408

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月10日 上午1:39
下一篇 2023年2月10日 上午1:40

相关推荐