deque和stack容器
deque和stack容器
一、 deque容器
双端数组,可以在头部和尾部插入弹出元素
deque容器与上章节类似
在其基础上增加了push_back()、push_front()、pop_back()、pop_front()函数
push_back() //在容器尾部添加一个数据
push_front() //在容器头部插入一个数据
pop_back() //删除容器最后一个数据
pop_front() //删除容器第一个数据
代码走起
使用stl提供的vector,引用头文件 #include "deque"
代码示例
#include <iostream>
using namespace std;
#include "deque"
void DequeTest()
{
deque<int> d1;
d1.push_back(1); //在尾部插入数据 1
d1.push_back(3); //在尾部插入数据 3
d1.push_back(5); //在尾部插入数据 5
d1.push_front(-11); //在头部插入数据 -11
d1.push_front(-33) //在头部插入数据 -33
d1.push_front(-55) //在头部插入数据 -55
cout << "头部元素:" << d1.front() << endl; //头部元素:-55
cout << "尾部元素:" << d1.back() << endl; //尾部元素:5
//①迭代输出deque
for( deque<int>::iterator it = d1.begin() ; it != d1.end() ; it++ )
{
cout << *it << " ";
}
d1.pop_front(); //弹出(删除)头部元素
d1.pop_back(); //弹出(删除)尾部元素
//②迭代输出deque
for( deque<int>::iterator it = d1.begin() ; it != d1.end() ; it++ )
{
cout << *it << " ";
}
}
查找某个值在数组(deque)中的下标值
接上面代码
//查找3 在数组(deque)中的下标值
deque<int>::iterator it = find( d1.begin() , d1.end() , 3); //返回迭代器的位置:it
if ( it != d1.end() )
{
cout << "值3的下标是" << distance(d1.begin() , it ) << endl; // distance函数找到下标
}
else
{
cout << "没有找到" << endl;
}
注:需添加头文件 algorithm.h
二、 stack
简介
stack是堆栈容器,是一种“先进后出”的容器
stack是简单的装饰deque容器而成的另外一种容器
引用头文件 <inlcude "stack>
代码走起
#include <iostream>
using namespace std;
#include "stack"
void StackTest()
{
stack<int> s;
//入栈 0 1 2 3 4 5 6 7 8 9
for( int i = 0 ; i < 10 ; i++ )
{
s.push( i + 1);
}
cout << "栈的大小" << s.size() << endl;
//出栈
while ( !s.empty() )
{
int nTmp = s.Top(); //获取栈顶元素
cout << nTmp << " "; //输出值:10 9 8 7 6 5 4 3 2 1 0 先入后出
s.pop(); //弹出栈顶元素
}
}
注:stack栈中可以放类、类指针等