之所以专门把STL中的这两个拿出来说一说,是因为vector和deque都是支持随机访问的,其支持的迭代器类型都为随机访问,而不像map,set,list等都是支持双向迭代器的。
vector,deuqe之对比:
1:随机访问速度:vector > deque。
2;deque性能损失比vector高几个数量级:因为deque首次插入一个元素时,会默认动态分配512字节空间,当这512字节空间用完后,它会再动态分配自己另外的512字节空间,然后虚拟地连在一起。deque的这种设计使得它具有比vector复杂得多的架构、算法和迭代器设计,也使得性能损失比vector高!
3:在插入删除操作时,deque由于vector:对于vector而言,由于其是一端开口,所以在尾部插入耗费固定的时间,而在头部进行插入时,耗费的时间与vector的大小成正比,vector越大,耗费的时间越多。而对于deque,不管插入删除操作是在头部还是尾部进行,算法的效率是固定的。
只看不写的程序员不是优秀的程序员,下面我们用代码来说明上述问题:
先看vector的:
int main() { struct timeb tb1,tb2; //定义时间,以便计算程序前后的执行时间 unsigned int real_time = 0; ifstream ifs("test1.txt"); //我在test1.txt里存放了一百万个数 ofstream ofs("test2.txt"); //将整理后的数据存放到test2.txt里 istream_iterator<int> ibeg(ifs); istream_iterator<int> ien