欢迎前往我的个人博客阅读原文。
学习了五种常用的容器,还剩下 stack 堆栈容器和 queue 队列容器没有学习。今天就来学习这两种容器。
stack 堆栈容器
stack 堆栈是一个后进先出(Last In First Out,LIFO) 的线性表,插入和删除元素都只能在表的一端进行。插入元素的一端称为栈顶(Stack Top),而另一端则称为栈底(Stack Bottom)。插入元素叫入栈(Push),元素的删除则称为出栈(Pop)。
使用 stack,需要头文件声明:
#include<stack>
堆栈的使用方法
堆栈只提供入栈、出栈、栈顶元素访问和判断是否为空等几种方法。
- 采用
push()
方法将元素入栈; - 采用
pop()
方法出栈; - 采用
top()
方法访问栈顶元素; - 采用
empty()
方法判断堆栈是否为空; - 采用
size()
方法返回当前堆栈中有几种元素。
下面的程序展示了各种方法的使用:
#include<stack>
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
// 定义堆栈s,其元素类型为整型
stack<int> s;
// 元素入栈
s.push(1);
s.push(2);
s.push(4);
s.push(8);
// 读取栈顶元素
cout << s.top() << endl;
// 返回堆栈元素数量
cout << s.size() << endl;
// 删除所有元素
while (s.empty() != true)
{
cout << s.top() << ' ';
s.pop();
}
cout << endl;
// 判断堆栈是否为空
cout << s.empty() << endl;
return 0;
}
运行结果:
queue 队列容器
queue 队列容器是一个先进先出(First In First Out,FIFO) 的线性存储表,元素的插入只能在队尾,元素的删除只能在队首。
queue 需要声明头文件:
#include<queue>
queue 队列的使用方法
queue 队列具有入队 push()
(即插入元素)、出队 pop()
(即删除元素)、读取队首元素 front()
、读取队尾元素 back()
、判断队列是否为空 empty()
和队列当前元素的数目 size()
这几种方法。
下面这段程序展示了各种方法的使用方法:
#include<queue>
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
// 定义队列,元素类型是整型
queue<int> q;
// 入队,即插入元素
q.push(1);
q.push(2);
q.push(4);
q.push(8);
// 返回队列元素数量
cout << q.size() << endl;
// 读取队尾元素
cout << q.back() << endl;
// 读取队首元素
cout << q.front() << endl;
// 删除所有元素
while (q.empty() != true)
{
cout << q.front() << ' ';
// 队首元素出队
q.pop();
}
cout << endl;
// 队列是否为空
cout << q.empty() << endl;
return 0;
}
运行结果:
到此,C++ STL的常用的容器基本上就介绍完了,有了这些基本的容器,就可以编写更加高效的代码。但学无止境,C++ 中还有许多没有学习的知识,以后慢慢学习进步。