C++:STL之vector,deque对比

本文对比了C++ STL中vector和deque的主要差异,包括随机访问速度和插入删除操作的性能。vector在随机访问速度上更快,而deque在插入删除(尤其是头部操作)时更高效。在选择容器时,可根据具体需求来决定使用vector还是deque。
摘要由CSDN通过智能技术生成

之所以专门把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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值