zoukankan      html  css  js  c++  java
  • 【转载】deque双向队列

    继vector和queue之后,又发现一个很好用的东西。

    本篇转载自http://blog.csdn.net/morewindows/article/details/6946811


    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似。


    1.常用成员函数


    0_1320717883Pm54


    2.示例

    #include "stdafx.h"
    
    #include <deque>  
    #include <cstdio>  
    #include <algorithm>  
    using namespace std;
    
    int main()
    {
        deque<int> ideq(20); //Create a deque ideq with 20 elements of default value 0  
        deque<int>::iterator pos;
        int i;
    
        //使用assign()赋值  assign在计算机中就是赋值的意思  
        for (i = 0; i < 20; ++i)
            ideq[i] = i;
    
        //输出deque  
        printf("输出deque中数据:
    ");
        for (i = 0; i < 20; ++i)
            printf("%d ", ideq[i]);
        putchar('
    ');
    
        //在头尾加入新数据  
        printf("
    在头尾加入新数据...
    ");
        ideq.push_back(100);
        ideq.push_front(i);
    
        //输出deque  
        printf("
    输出deque中数据:
    ");
        for (pos = ideq.begin(); pos != ideq.end(); pos++)
            printf("%d ", *pos);
        putchar('
    ');
    
        //查找  
        const int FINDNUMBER = 19;
        printf("
    查找%d
    ", FINDNUMBER);
        pos = find(ideq.begin(), ideq.end(), FINDNUMBER);
        if (pos != ideq.end())
            printf("find %d success
    ", *pos);
        else
            printf("find failed
    ");
    
        //在头尾删除数据  
        printf("
    在头尾删除数据...
    ");
        ideq.pop_back();
        ideq.pop_front();
    
        //输出deque  
        printf("
    输出deque中数据:
    ");
        for (pos = ideq.begin(); pos != ideq.end(); pos++)
            printf("%d ", *pos);
        putchar('
    ');
    
        system("pause");
        return 0;
    }

    运行结果:

    image


    另外要注意一点。对于deque和vector来说,尽量少用erase(pos)和erase(beg,end)。因为这在中间删除数据后会导致后面的数据向前移动,从而使效率低下。

  • 相关阅读:
    char*,const char*和string的相互转换[转]
    1.0到2.0 的变化
    Hello项目分析
    VS上编译Lua5.1.4生成静态库
    cocos2dx 自带动画
    asp.net2.0安全性(Login系列控件)
    用js实现的对css的一些操作方法
    mapxtreme开发小结3(c#)
    asp.net页面事件执行顺序
    access与SqlServer 之时间与日期及其它SQL语句比较
  • 原文地址:https://www.cnblogs.com/betterwgo/p/8093070.html
Copyright © 2011-2022 走看看