STL中的容器:
stack容器 queue容器 常用接口及用法:
stack
(栈)容器:stack
容器是一种先进后出(First In Last Out,FILO)的结构,(也可以被称为后进先出),它只有一个端口;
stack
(栈)容器的特点:
1.栈只有一个端口,意思即只可以从唯一仅有的端口添加数据和弹出数据;
2.栈中只有顶端的元素才可以被外界访问到,因此栈是不允许有遍历行为的;
3.栈中进入数据称为——入栈(push)
4.栈中弹出数据称为——出栈(pop)
图片转自于黑马程序员,是在学习的过程中截图下来的
生活中与栈相关的实例:子弹弹匣、只开了一个门的地铁或公交车;
各种函数接口具体如何使用,下面的代码块中会有详细的使用方法
stack
容器常用接口:
构造函数:
1.stack<T> stk;
默认(无参)构造函数;
2.stack(const stack & stk);
拷贝构造函数;
赋值操作:
1.stack& operator=(const stack & stk);
通过重载赋值运算符的方式给新创建的 stack
容器赋值;
数据存取:
1.push(elem);
向 stack
容器的栈顶添加元素 elem
;
2.pop();
移除 stack
容器中的栈顶元素;
3.top();
返回 stack
容器中的栈顶元素;
大小操作:
1.empty();
判断堆栈是否为空;
2.size();
用于查看容器的大小(元素个数);
#include <iostream>
#include <stack> //使用STL中的容器,得包含它的头文件
#include <algorithm> //使用STL提供的算法,得包含它的头文件
using namespace std;
void test_1() //stack容器常用接口
{
//创建stack容器
stack<int> s1; //默认(无参)构造函数
//入栈
s1.push(100);
s1.push(200);
s1.push(300);
s1.push(400);
stack<int> s2(s1); //拷贝构造函数
stack<int> s3;
s3 = s1; //通过重载赋值运算符的方式给新创建的stack容器赋值
//查看容器的大小
cout << "栈的大小为:" << s1.size() << endl;
//判断stack容器s1是否为空,若不为空,返回栈顶元素,并执行出栈操作
while(!s1.empty())
{
cout << "栈顶元素为:" << s1.top() << endl; //返回栈顶元素
s1.pop(); //出栈
}
//查看容器的大小
cout << "栈的大小为:" << s1.size() << endl;
}
int main()
{
test_1();
system("pause");
return 0;
}
queue
(队列)容器:queue 容器是一种先进先出(First In First Out,FIFO)的结构,它有两个端口;
queue
(队列)容器的特点:
1.队列只允许从一端新增元素,从另一端移除元素;
2.队列中,只有队头和队尾可以被外界访问到,因此是不允许有遍历行为的;
3.队列中进数据称为——入队(push)
4.队列中出数据称为——出队(pop)
图片转自于黑马程序员,是在学习的过程中截图下来的
生活中与队列相关的实例:排队打饭、排队买票;
queue
容器的常用接口:
构造函数:
1.queue<T> que;
默认(无参)构造函数;
2.queue(const queue & que);
拷贝构造函数;
赋值操作:
1.queue& operator=(const queue & que);
通过重载赋值运算符的方式给新创建的 queue
容器赋值;
数据存取:
1.push(elem);
向 queue
容器的队尾添加元素 elem
;
2.pop();
移除 queue
容器中的队头元素;
3.front();
返回 queue
容器中的队头元素;
4.back();
返回 queue
容器的队尾元素;
大小操作:
1.empty();
判断堆栈是否为空;
2.size();
用于查看容器的大小(元素个数);
#include <iostream>
#include <string> 使用STL中的容器,得包含它的头文件
#include <queue> //使用STL中的容器,得包含它的头文件
#include <algorithm> //使用STL提供的算法,得包含它的头文件
using namespace std;
//人类
class Person
{
public:
Person(string name,int age)
{
this->m_Name = name;
this->m_Age = age;
}
string m_Name; //姓名
int m_Age; //年龄
};
void test_1() //queue容器常用接口
{
//创建queue容器
queue<Person> q1;
//创建要传入queue容器的对象
Person p1("唐僧",30);
Person p2("孙悟空",1000);
Person p3("猪八戒",900);
Person p4("沙僧",800);
//入队
q1.push(p1);
q1.push(p2);
q1.push(p3);
q1.push(p4);
queue<Person> q2(q1); //拷贝构造函数
queue<Person> q3;
q3 = q1; //通过重载赋值运算符的方式给新创建的queue容器赋值
//返回容器的大小
cout << "队列的大小为:" << q1.size() << endl;
//判断queue容器q1是否为空,若不为空,返回队头元素和队尾,并执行出队操作
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;
}
int main()
{
test_1();
system("pause");
return 0;
}
以上就是STL中stack容器和queue容器的一些常用接口和用法啦O(∩_∩)O。笔记中有错误的地方,欢迎指出,欢迎大家讨论!