HELLO,各位博友好,我是阿呆 🙈🙈🙈
这里是 C++ 浅谈系列,收录在专栏 C++ 语言中 😜😜😜
本系列阿呆将记录一些 C++ 语言重要的语法特性 🏃🏃🏃
OK,兄弟们,废话不多直接开冲 🌞🌞🌞
stack 先进后出,允许添加、删除、取得顶端元素。不允许遍历,入栈 push,出栈 pop 👦👦👦
deque
双向开口,封闭头端开口,便形成了stack
,源码如下 👇👇👇
template >
class stack {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: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<(const stack& x, const stack& y) {return x.c < y.c;
}
stack
不支持遍历,也不提供迭代器 🐋🐋🐋
list
双向开口,一样可形成一个 stack
,代码如下 👇👇👇
#include
#include
#include
#include
using namespace std;
int main() {stack > istack;
}
queue
先进先出,允许底部添加、顶部取出、不允许遍历。入队列称为 push
,出队列称为 pop
👨🚀👨🚀👨🚀
以 deque
为底部结构并封闭其底端出口和前端入口,便形成了queue
,源码如下 👇👇👇
template >
class queue {friend bool operator== __STL_NULL_TMPL_ARGS (const queue& x, const queue& y);friend bool operator< __STL_NULL_TMPL_ARGS (const queue& x, const queue& y);
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:bool empty() const { return c.empty(); }size_type size() const { return c.size(); }reference front() { return c.front(); }const_reference front() const { return c.front(); }reference back() { return c.back(); }const_reference back() const { return c.back(); }// deque 是两头可进出,queue 是末端进,前端出(所以先进者先出)。void push(const value_type& x) { c.push_back(x); }void pop() { c.pop_front(); }
};template
bool operator==(const queue& x, const queue& y) {return x.c == y.c;
}template
bool operator<(const queue& x, const queue& y) {return x.c < y.c;
}
queue
不支持遍历,也不提供迭代器 🐳🐳🐳
list
双向开口,一样可形成一个 queue
,代码如下 👇👇👇
#include
#include
#include
#include
using namespace std;
int main() {queue > iqueue;
}
身处于这个浮躁的社会,却有耐心看到这里,你一定是个很厉害的人吧 👍👍👍
各位博友觉得文章有帮助的话,别忘了点赞 + 关注哦,你们的鼓励就是我最大的动力
博主还会不断更新更优质的内容,加油吧!技术人! 💪💪💪
下一篇:一文带你攻克JDK新特性