- 双端队列deque是一种双向开口的存储空间分段连续的数据结构,每段数据空间内部是连续的,而每段数据空间则不一定连续。
- 初始状态下,双端队列中只有一段数据空间,中控器的第一个指针指向这段空间。在向deque插入和删除元素的过程中,会根据数据空间的状态,动态分配和释放空间,数据空间段的数量会发生变化。
- 如果无法像deque的队首插入更多的元素,表明首段数据空间已满,deque会申请一段新的数据空间,这段新的数据空间会作为首段数据空间,原有的首段数据空间作为第二段数据空间。
- 如果无法向deque的队尾插入更多的元素,表明末端数据空间已满,deque会申请一段新的数据空间,这段新的数据空间会作为末端数据空间,原有的末端数据空间作为倒数第二段数据空间。
- 如果从队首删除元素后首段数据空间为空,deque会将首段数据空间释放,并将原有的第二段数据空间作为首段数据空间。
- 如果从队尾删除元素后末段数据空间为空,deque会将末段数据空间释放,并将原有的倒数第二段数据空间作为末段数据空间。
- 此外,deque中还有两组迭代器,分别关联首段数据空间和末段数据空间,用于在队首和队尾进行插入删除操作。
- 队首迭代器中有三个指针:first指针指向队首数据空间的起始位置;cur指针指向队首数据空间的第一个有效元素;last指针指向队首数据空间的结束位置。由于在插入删除过程中,队首数据空间的前若干个元素可能为空,因此第一个有效元素可能位于队首数据空间中的任何位置。
- 队尾迭代器中有三个指针:first指针指向队尾数据空间的起始位置;cur指针指向队尾数据空间的最后一个有效元素;last指针指向队尾数据空间的结束位置。由于在插入删除过程中,队尾数据空间的最后几个元素可能为空,因此最后一个有效元素可能位于队尾数据空间中的任何位置。
简述deque容器的插入删除原理
最新推荐文章于 2024-05-15 08:48:49 发布