您现在的位置是:首页 > Javascript
当前栏目
C++ -- queue 和 stack模拟实现
2023-04-18 14:26:58 时间
文章目录
C++ – queue 和 stack模拟实现
1. queue模拟实现
队列是先进先出的特性,这里要支持vector、list、deque等等,这里queue和stack模拟实现,都是直接复用
1.0 成员变量
template <class T, class Container = list<T>>
Container _container;
1.1 push()
void push(const T& val)
{
_container.push_back(val);
}
1.2 pop()
void pop()
{
_container.pop_front();
}
1.3 front()
const T& front()
{
return _container.front();
}
1.4 back()
const T& back()
{
return _container.back();
}
1.5 size()
size_t size()
{
return _container.size();
}
1.6 empty()
bool empty()
{
return _container.empty();
}
- 解释class Container作用
就拿push()来说,_contatiner.push_back(val);假设 _Container是list类型,那么 _container就是list类型,这时 _container直接调用库接口push_back();
1.7 完整代码
namespace my_queue
{
template <class T, class Container = list<T>>
class queue
{
public:
void push(const T& val)
{
_container.push_back(val);
}
void pop()
{
_container.pop_front();
}
const T& front()
{
return _container.front();
}
const T& back()
{
return _container.back();
}
size_t size()
{
return _container.size();
}
bool empty()
{
return _container.empty();
}
private:
Container _container;
};
}
2. stack模拟实现
2.0 成员变量
template <class T, class Container = vector<T>>
Container _container;
2.1 push()
void push(const T& val)
{
_container.push_back(val);
}
2.2 pop()
void pop()
{
_container.pop_back();
}
2.3 top()
const T& top()
{
return _container.back();
}
2.4 back()
const T& back()
{
return _container.back();
}
2.5 size()
size_t size()
{
return _container.size();
}
2.6 empty()
bool empty()
{
return _container.empty();
}
2.7 完整代码
namespace my_stack
{
template <class T, class Container = vector<T>>
class stack
{
public:
void push(const T& val)
{
_container.push_back(val);
}
void pop()
{
_container.pop_back();
}
const T& top()
{
return _container.back();
}
const T& back()
{
return _container.back();
}
size_t size()
{
return _container.size();
}
bool empty()
{
return _container.empty();
}
private:
Container _container;
};
}
相关文章
- 常见的WebGIS地图库
- 基于eos的Dapp开发--元素战争(三)
- Vue 超实用方法,效率提升80%
- Vue 8种组件通信方式
- 6个上万人推荐的强大网站!工作学习必备,你值得拥有
- 重学JavaScript第1集|变量提升
- 被同事的空指针硬生生的折磨了好久,终于学会了如何处理空指针
- 让你怀疑人生的重载和重写的区别
- 详解JavaScript引擎的相关概念和工作原理
- 联想个人智能大厦全新升级 多赛道并举领跑新常态
- Deno需要做什么才能取代Node.js?
- JavaScript开发人员看过来!这份TypeScript快速入门简介请收好
- 在Ant Design 4.0里,我们如何追求快乐的工作?
- 初学者怎样学习 JS 更有效?六个方法供你参考!
- Node Sass 弃用,以 Dart Sass 代替
- 一篇文章带你了解JavaScript 数组迭代方法
- 你用过宏##粘贴函数,然后用函数指针查找执行吗?今天就给你说道说道
- CSS(CascadingStyle Sheets)样式更改——2D转换
- 程序员跳槽,该如何选择一家好公司
- 10个适合程序员逛的在线社区