双端数组:既能从尾部插入和删除数据也能从头部插入和删除数据
1.中控器中存放一个个缓冲区地址,缓冲区中存放真实的数据(元素) --- 一个缓冲区中可以存放多个元素
一开始创建一个deque容器时,中控器中只维护着一个缓冲区地址(我们称这个地址为节点),当我们添加元素的时候:
先放入第一个元素到节点缓冲区中,然后如果我们想在第一个元素前面再加一个元素的话,deque容器中就会自动的再开辟一个缓冲区,然后将这个缓冲区的地址存放到中控区的节点的上面,然后再在这个新创建的缓冲区中添加元素,添加满后再开辟一个缓冲区(这样就实现了头部增减元素)
尾部增减元素也同理,当节点缓冲区填满以后就会自动再开辟一个缓冲区,并将这个缓冲区的地址放到节点地址的下面,然后在这个缓冲区中添加元素
2.deque容器为什么找元素慢?这是因为deque容器中找元素分为3步:
一:在中控器中找到数据所属的缓冲区的地址
二:根据地址找到缓冲区
三:在缓冲区中找到数据
而在Vector容器中只需要一步:根据数据地址在容器中找到数据
最后:deque容器的迭代器支持随机访问
和vector容器没区别
如果想限定一个容器为只读状态的话,那么它的迭代器也必须为只读迭代器
补充知识:如何获得一个只读的迭代器?
将原本的 iterator 替换为 const_iterator --- 即从创建一个能读能写的迭代器替换为创建一个只读的迭代器
和vector容器没啥区别
也和vector容器没有区别
在deque容器中是没有容量这个概念的
1.注意这里插入一个区间的数据指的是插入一个别的容器的区间的数据
和vector容器一样,没有改变
将deque容器的区间作为参数放到sort方法后,就会自动排序(且是按照从小到大的顺序排)
注意:!!这个sort方法不是deque容器中的成员方法,而是标准算法头文件中的方法,所以使用这个方法前我们要引入标准算法头文件
#include
sort方法的参数是我们给定的容器区间,第一个参数是左区间,第二个参数是右区间(然后两个区间都是闭区间)
ps:拥有支持随机访问的迭代器的容器才可以用sort算法进行排序