本专栏内容为:C++学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C++。
💓博主csdn个人主页:小小unicorn
⏩专栏分类:C++
🚚代码仓库:小小unicorn的代码仓库🚚
🌹🌹🌹关注我带你学习编程知识
STL详解(七)
- stack
- stack的定义方式
- stack的使用
- queue
- queue的定义方式
- queue的使用
stack
stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其只能从容器的一端进行元素的插入与提取操作。
stack的定义方式
方式一: 使用默认的适配器定义栈。
stack<int> st1;
方式二: 使用特定的适配器定义栈。
stack<int, vector<int>> st2;
stack<int, list<int>> st3;
注意: 如果没有为stack指定特定的底层容器,默认情况下使用deque
stack的使用
stack常用函数有以下这些:
示例如下:
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main()
{
stack<int, vector<int>> st;
st.push(1);
st.push(2);
st.push(3);
st.push(4);
cout << st.size() << endl; //4
while (!st.empty())
{
cout << st.top() << " ";
st.pop();
}
cout << endl; //4 3 2 1
return 0;
}
测试结果:
queue
队列是一种容器适配器,专门用在具有先进先出操作的上下文环境中,其只能从容器的一端插入元素,另一端提取元素。
queue的定义方式
方式一: 使用默认的适配器定义队列。
queue<int> q1;
方式二: 使用特定的适配器定义队列。
queue<int, vector<int>> q2;
queue<int, list<int>> q3;
注意: 如果没有为queue指定特定的底层容器,默认情况下使用deque。
queue的使用
queue常用函数有以下这些:
示例如下:
namespace cl //防止命名冲突
{
template<class T, class Container = std::deque<T>>
class stack
{
public:
//元素入栈
void push(const T& x)
{
_con.push_back(x);
}
//元素出栈
void pop()
{
_con.pop_back();
}
//获取栈顶元素
T& top()
{
return _con.back();
}
const T& top() const
{
return _con.back();
}
//获取栈中有效元素个数
size_t size() const
{
return _con.size();
}
//判断栈是否为空
bool empty() const
{
return _con.empty();
}
//交换两个栈中的数据
void swap(stack<T, Container>& st)
{
_con.swap(st._con);
}
private:
Container _con;
};
}
测试结果: