5、 stack容器
5.1 简介
① stack是一种先进后出的容器,它只有一个出口。
② 栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为。
③ 栈中进入数据称为:入栈 push
④ 栈中弹出数据称为:出栈 pop
5.2 常用接口
① 功能描述:栈容器常用的对外接口。
② 构造函数:
构造函数:
stack<T> stk; //stack采用模板类实现, stack对象的默认构造形式
stack(const stack &stk); //拷贝构造函数赋值操作:
③ 赋值操作:
stack& operator=(const stack &stk); //重载等号操作符
``
④ 数据存取:
```cpp
数据存取:
push(elem); //向栈顶添加元素
pop(); //从栈顶移除第一个元素
top(); //返回栈顶元素
⑤ 大小操作:
大小操作:
empty(); //判断堆栈是否为空
size(); //返回栈的大小
例子
void stacktest01()
{
stack<int> s1;
//入栈
s1.push(10);
s1.push(20);
s1.push(30);
s1.push(40);
s1.push(50);
while (!s1.empty())
{
cout << "栈顶元素为: " << s1.top() << endl;
s1.pop(); //出栈
}
cout << "栈大小为: " << s1.size() << endl;
}
6. queue容器
6.1 简介
① queue是一种先进先出的数据结构,它有两个出口。
② 队列容器允许一段新增元素,从另一端移除元素。
③ 队列中只有对头和队尾才可以被外界使用,因此队列不运行有遍历行为。
④ 队列中进数据称为入队。
⑤ 队列中出数据称为出队。
6.2 常用接口
① 功能描述:栈容器常用的对外接口。
② 构造函数:
构造函数:
queue<T> que; //queue采用模板类实现,queue对象的默认构造形式
queue(const queue &que); //拷贝构造函数
③ 赋值操作:
赋值操作:
queue& operator=(const queue &que); //重载等号操作符
④ 数据存储:
数据存取:
push(elem); //往队尾添加元素
pop(); //从队头移除第一个元素
back(); //返回最后一个元素
front(); //返回第一个元素
⑤ 大小操作:
大小操作:
empty(); //判断堆栈是否为空
size(); //返回栈的大小
例子
class Person
{
public:
Person(string name,int age)
{
this->m_Name = name;
this->m_Age = age;
}
string m_Name;
int m_Age;
};
void queue_test01()
{
queue<Person> q1;
Person p1("AAAA", 19);
Person p2("BBBB", 35);
Person p3("CCCC", 24);
Person p4("DDDD", 13);
Person p5("EEEE", 42);
q1.push(p1);
q1.push(p2);
q1.push(p3);
q1.push(p4);
q1.push(p5);
cout << "队列大小为: " << q1.size() << endl;
while (!q1.empty())
{
cout << "队头 为 姓名: " << q1.front().m_Name << " 年龄: " << q1.front().m_Age << endl;
cout << "队尾 为 姓名: " << q1.back().m_Name << " 年龄: " << q1.back().m_Age << endl;
q1.pop();
}
cout << "队列大小为: " << q1.size() << endl;
}