• C++标注模板库(STL)-deque介绍


    C++标准库中的deque是一个双端队列(double-ended queue),它支持在队列的前端和后端进行插入和删除操作。deque在内部使用了动态数组来实现,因此具有高效的随机访问性能。

    deque基本操作

    deque是C++标准库中的双端队列(double-ended queue),它支持在队列的前端和后端进行插入和删除操作。以下是一些基本的deque操作函数:

    1. push_front(): 在队列前端插入一个元素。
    2. push_back(): 在队列后端插入一个元素。
    3. pop_front(): 删除队列前端的一个元素。
    4. pop_back(): 删除队列后端的一个元素。
    5. front(): 返回队列前端元素。
    6. back(): 返回队列后端元素。
    7. empty(): 检查deque是否为空。
    8. size(): 返回deque中元素的数量。
    9. clear(): 删除deque中的所有元素。
    10. insert(iterator position, const value_type& val): 在迭代器position指定的位置之前插入值val
    11. erase(iterator position): 删除位于position的元素。
    12. erase(iterator first, iterator last): 删除位于范围[first, last)内的元素。
    13. swap(deque& x): 与另一个deque交换内容。
    14. rbegin(): 返回指向deque后端的随机访问迭代器。
    15. rend(): 返回指向deque前端反向的随机访问迭代器。
    16. begin(): 返回指向deque前端的随机访问迭代器。
    17. end(): 返回指向deque后端反向的随机访问迭代器。

    deque特性

    1. 具有动态大小:deque是一个动态数组,可以根据需要自动扩展或收缩容器。
    2. 两端可扩展:deque可以在前端或后端(或同时两端)进行插入和删除操作。
    3. 随机访问迭代器:deque允许通过随机访问迭代器直接访问各个元素。

    请注意,不同的库可能以不同的方式实现deques,但在任何情况下,它们都允许通过随机访问迭代器直接访问各个元素,并通过根据需要扩展和收缩容器来自动处理存储。

    应用举例

    #include 
    #include 
    
    int main() {
        std::deque d;
    
        // 在队列后端插入元素
        d.push_back(1);
        d.push_back(2);
        d.push_back(3);
    
        // 在队列前端插入元素
        d.push_front(0);
        d.push_front(4);
    
        // 删除队列前端元素
        d.pop_front();
    
        // 删除队列后端元素
        d.pop_back();
    
        // 遍历队列中的元素并输出
        for (int i : d) {
            std::cout << i << " ";
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
  • 相关阅读:
    IDEA使用技巧
    用shell批量改变打错标签的名字(打标签是一生之敌)
    06【Redis事务与分布式锁】
    解决 Android 依赖冲突
    python进程和线程(05)
    我要写整个中文互联网界最牛逼的JVM系列教程 | 「类加载子系统」章节:为什么需要用户自定义类加载器以及其具体实现
    Redis 内存优化神技,小内存保存大数据
    mysql DBA常用的sql
    云计算行业这些热点事件透露了哪些玄机?
    基于C++11封装的线程池
  • 原文地址:https://blog.csdn.net/scy518/article/details/134544811