vector,deque,list,map,数组比较与分析
来源:互联网 发布:多梦疲劳知乎 编辑:程序博客网 时间:2024/04/30 23:02
vector和数组区别:
vector是个容器,array不是
vector可以知道自己的大小,array不知道
vector可以变大变小,这里变小指的是元素数目,array不能变大变小
数组在内存中分配的连续空间,多次分配释放后会有内存碎片,
而vectors是动态增长的,当前的容量(capacity)不足就申请一块当前容量2倍的新内存空间,然后将所有的老元素全部拷贝到新内存中,添加大量元素的时候的花费的惊人的大.
还有vector的迭代器能防止出现类似数组愈界,所以vector更加安全,健壮 等等
效率上我认为数组更高一点,数组只是一个基本类型,少了vector 的封装,少了构造函数和析构函数这些操作
vector和deque的相同点
1.顺序容器
2.为动态一维数组
3.在中间位置插入和删除操作时间复杂度为O(N);
4.可以快速随机访问元素
不同点:
1.vector支持push_back, pop_back操作; deque支持push_back, push_front, pop_back, pop_front操作;
2.vector的push_back, pop_back操作时间复杂度为O(1), 头部插入和删除操作时间复杂度为O(N);deque的push_back, push_front, pop_back, pop_front操作时间复杂度为O(1);
3.vector为连续的存储空间; deque的存储空间为页面或块;
4.vector预留存储空间;deque不预留存储空间.
list和map的区别:
list底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢。
list 的push_back, push_front, pop_back, pop_front操作时间复杂度为O(1),查找的话需要通过迭代器编译 时间复杂度是O(n)
map 的内部实现是RB-tree 红黑二叉树 插入和删除的时间复杂度是O(LOG2N)
- vector,deque,list,map,数组比较与分析
- vector,deque,list,map,数组比较与分析
- vector,deque,list,map,数组比较与分析
- c++ list, vector,deque, map,set 区别与用法比较
- vector,list,deque, map,set 特点分析
- vector与list与deque比较
- vector与 list与 deque的比较
- vector, list, deque 比较
- vector list deque比较
- vector list deque比较
- STL vector list deque map
- vector,list,deque的比较
- vector,list,deque 性能比较
- vector,set,map,list,deque的区别与联系
- deque的用法及其与vector、list应用比较
- Map与List及Vector性能比较
- Map与List和Vector性能比较
- 浅谈vector、deque与list
- Dom4j解析项目xml文件
- 收藏:(2011)中国互联网开放元年:看不见硝烟的战争
- fedora 学习点滴
- 开发中常见问题集锦
- 11714 - Blind Sorting
- vector,deque,list,map,数组比较与分析
- 黑马程序员----JAVA----枚举和反射
- 使用 Eclipse 创建 Maven SOAP Web 服务
- 20130226日报(网易笔试有感)
- 使用 CXF、Spring、Maven 创建一个 SOAP 客户端
- 黑马程序员----JAVA----注解
- 深入理解JavaScript闭包(closure)
- Hadoop编程之MapReduce操作Mysql数据库
- 黑马程序员----JAVA----交通灯