首页 > 其他分享 >stl之deque、queue和stack

stl之deque、queue和stack

时间:2023-03-12 22:12:49浏览次数:25  
标签:deque 指向 iterator stl 元素 queue buffer vector

deque

deque 有个以 vector 组成的控制中心 map ,意味这它会自动扩充,每个 vector 元素指向一个 buffer缓冲区,这个控制中心有 start 和 finish iterator分别有 node 指向第一个 buffer 和 最后一个,每个 buffer 也有 iterator ,里面有4个元素:cur、first、last、node分别指向该 buffer 的当前指向元素、buffer 空间第一和最后元素和在控制中心的位置
image


map 的类型是 T**,指针指针,因为还有指向 vector 元素嘛


那 buffer 里可以放多少个元素呢?可以指定,但是没有指定的情况下,如果元素大小大于 512 字节,那就放 1 个,小于的话放 512/该元素大小 个
image

deque iterator

首先它的 iterator_category 是 random_access_iterator_tag 虽然事实上它不少连续的但是声称它是连续的
image

deque::insert()

先判断是不是头或尾,那就可以直接 push front 或 back,都不是就看看插入位置离哪边近,推动较少元素的那边再插入
image

如何模拟连续空间

靠重载,像数组一样的 +、-、[ ]、+=、-= 等都要进行重载,比如 - ,那要知道两个元素之间的距离,就要知道其中所处之间有几个 buffer 再加上其在 buffer 上所处的位置关系,要知道有几个 buffer 用 node 相减 - 1,就可以
image

标签:deque,指向,iterator,stl,元素,queue,buffer,vector
From: https://www.cnblogs.com/acwarming/p/17209314.html

相关文章

  • stl之vector
    对vector的理解vector就是可以扩充的array,它有三个指针:start、finish、end_of_storage,分别代表vector存放了数据的开始、结束和整个容量的尾巴,它扩充的时候也不是原地就......
  • [STL] 3 迭代器概念与 traits 编程技法
    3迭代器概念与traits编程技法3.1迭代器设计思维——STL关键所在中心思想在于将数据容器和算法分开。3.2迭代器是一种智能指针迭代器最重要的编程工作是对opera......
  • PentestLab-web安全SQL注入-EXP2
    我们打开pentestlab靶机选择“sql  injections”选择“Example2”观察页面发现name是注入点使用工具测试sqlmap参数为pythonsqlmap.py-u"http://192.168.29.148/sqli/......
  • 2023-03-10 Java中使用ArrayDeque实现栈和队列
    栈和队列的实现实际上完全可以用JDK自带的类ArrayDeque来实现作为队列使用publicabstractbooleanadd(EparamE);//加入元素到队尾publicabstractbooleanoffe......
  • 一行一行源码分析清楚 AbstractQueuedSynchronizer(二)
    文章比较长,信息量比较大,建议在pc上阅读。文章标题是为了呼应前文,其实可以单独成文的,主要是希望读者看文章能系统看。本文关注以下几点内容:深入理解ReentrantLock公......
  • STL:map映照容器的简单用法(poj 2503 Babelfish)
    STL中map映照容器由一个键值和一个映照数据组成,具有一一对应的关系。结构为:键值--映照数据       例: aaa --111             bbb--222   ......
  • 链表指针指迷了我(UVA 11988 STL deque)
    BrokenKeyboard(a.k.a.BeijuText)You'retypingalongtextwithabrokenkeyboard.Wellit'snotsobadlybroken.Theonlyproblemwiththekeyboardisthats......
  • python3 queue模块
    1.模块介绍Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了......
  • 使用jstl得加pom里的依赖
    <!--jstl--><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>taglibs</groupId><......
  • PentestLab-web安全XSS注入-EXP5
    我们打开靶机选择“Example5”观察使用工具测试选择get方法输入url使用默认字典存在xss漏洞且payload为</script>"><script>prompt(1)</script>验证我们打开靶机观察源代码......