C++ STL 之 deque
deque 和 vector 的最大差异? 一在于 deque 允许常数时间内对头端进行元素插入和删除操作。 二在于 deque 没有容量的概念,因为它是动态的以分段的连续空间组合而成,随时可以增加一段新的空间并链接起来,换句话说,像 vector 那样“因旧空间不足而重新分配一块更大的空间,然后再复制元素,释放空间”这样的操作不会发生在 deque 身上,也因此deque 没有必要提供所谓的空间保留功能。 特性总结: 双端插入和删除元素效率较高. 指定位置插入也会导致数据元素移动,降低效率. 可随机存取,效率高. 经验之谈 : deque 是分段连续的内存空间,通过中控器维持一种连续内存空间的状态,其实现复杂性要大于 vector queue stack 等容器,其迭代器的实现也更加复杂,在需要对deque 容器元素进行排序的时候,建议先将 deque 容器中数据数据元素拷贝到 vector 容器中,对 vector 进行排序,然后再将排序完成的数据拷贝回 deque 容器。 1 #include <iostream> 2 #include <deque> 3 using namespace std; 4 5 void PrintDeque(deque<int>& d) 6 { 7 for (deque<int>::iterator it = d.begin();