STL容器的实现原理
来源:互联网 发布:淘宝店如何做广告? 编辑:程序博客网 时间:2024/06/06 18:55
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持下标访问,而list是以链表形式实现的,不支持下标访问。
Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了。
Map,Set属于标准关联容器,使用了非常高效的平衡检索二叉树:红黑树,他的插入删除效率比其他序列容器高是因为不需要做内存拷贝和内存移动,而直接替换指向节点的指针即可,最好和最坏都是logn。
Set和Vector的区别在于Set不包含重复的数据。Set和Map的区别在于Set只含有Key,而Map有一个Key和Key所对应的Value两个元素。
Map和Hash_Map的区别是Hash_Map使用了Hash算法来加快查找过程(Map使用二叉查找树,效率log n和二分查找一样),但是需要更多的内存来存放这些Hash桶元素,因此可以算得上是采用空间来换取时间策略。
0 0
- STL容器的实现原理
- STL容器的实现原理
- STL容器的实现原理
- STL容器的实现原理
- STL容器的实现原理
- STL容器的实现原理
- STL中容器的底层实现原理
- stl容器的实现原理-与数据结构的对应关系
- C++ STL容器deque内部实现原理
- STL容器的底层实现
- stl的实现原理
- STL容器设计原理
- C/C++知识要点2——STL中Vector、Map、Set容器的实现原理
- C++ STL中顺序容器类型以及实现原理
- TOP N 的 STL容器 实现
- STL之vector容器的实现框架
- STL之list容器的实现框架
- STL之deque容器的实现框架
- 影响历史的四个黑客故事
- 关于python-NameError: global name 'platform' is not defined
- leetcode----Evaluate Reverse Polish Notation
- org.jdom 解析xml
- CRLF injection 简单总结
- STL容器的实现原理
- 多线程
- Selenium webdriver处理alert、confirm弹出框
- Spark MLlib实现的广告点击预测–Gradient-Boosted Trees
- linux上很方便的上传下载文件工具rz和sz
- Fragment总结
- 腾讯QQ第三方登录2:原理与实现(OAuth2.0协议)
- java 回调的同步回调和异步回调
- Gradle 导入开源工程 常见问题解决方法