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栈中可以放类、类指针等

原文地址:https://www.cnblogs.com/zzhua/p/5940061.html