STL源码剖析

前言,对STL学习的总结

1.type_traits相关技术比较简单,略过

2.空间配置器allocator的分析见

https://www.cnblogs.com/XDU-mzb/p/14849837.html

3.配接器,仿函数、算法部分也不讲,比较简单

目录

1.deque

1.deque

这是一个比较复杂的容器,值得做一个分析

deque的功能

1.常数时间在头尾插入、删除
2.滋滋q[2]这样的随机访问
3.常数比较大
4.push_back push_front之后,迭代器不失效
5.什么时候使用deque
vector实现的环形队列可以很好的代替deque的功能
元素类型不能移动、拷贝、复制的时候,用deque
卡空间,vector可能导致空间不够用
std::vector::push_back() 是分摊 O(1)
std::deque::push_back() 是 O(1)
两者时间复杂度一致的情况下,std::vector虽然在平均情况下比较快,但std::deque在最差情况下有更好的表现
我认为最重要的两原因 : deque的实现保证,push之后迭代器不失效 + pop的时候会自动释放空间

上一篇:Java中栈和队列的使用及区别


下一篇:Python - 如何将 list 列表作为数据结构使用