2019-10-13|2019-10-13 STL模板
STL共有六大组件
1、容器 2、算法 3、迭代器 4、仿函数 6、适配器
STL容器的实现原理
STL来管理数据十分方便,省去了我们自己构建数据结构的时间.其实,STL的实现也是基于我们常见的数据结构.
序列式容器:
1: vector 向量,支持o(1)时间的快速访问;元素不够时再重新分配内存,拷贝原来数组的元素到新分配的数组中,这一点可以通过实验进行证明
#include
#include
usingnamespacestd;
int main() {
vector
for(inti = 0;
i<100;
i++) {
vec.push_back(i);
cout << "capacity is "<< vec.capacity() << endl;
}
}
注意事项:根据vector的插入和删除特性0(N);再插入位置和删除位置之后所有的迭代器和指针引用都会实效。
2: list双向链表
vector强调的是通过随机访问快速访问,而list强调的是元素的快速插入和删除
3:关联式容器
map与unordered_map有序的
相同:两者都是键-值对的集合,关联容器的一种。两者中的元素都是pair,同时拥有实值和键值。两者都不允许有两个相同的键值(实值可以相同)。两个的外部接口调用基本一致。
不同:内部实现机理不同,即map内部实现了一个红黑树 logN的查找 插入和删除;unordered_map内部实现了一个哈希表。(两者的比较成为红黑树与哈希表的比较)。由于内部实现机理不同(底层实现)造成以下不同。
map的有序性:红黑树(非严格平衡二叉树),该结构具有自动排序的功能,因此map内部的所有元素都是有序的。
unordered_map的无序性:哈希表不会根据key值大小进行排序,存储时是根据key的hash值判断元素是否相同,因此unordered_map内部元素是无序的。
map的运行效率:红黑树可以在O(log n)时间内做查找,插入和删除,这里的n是树中元素的数目。
unordered_map的运行效率:哈希表的查找的时间复杂度可达到O(1)
【2019-10-13|2019-10-13 STL模板】 unordered_map内存占用比map高
推荐阅读
- opencv|opencv C++模板匹配的简单实现
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- 通过复盘快速成长(附模板)
- 最新Mac系统安装fastlane|最新Mac系统安装fastlane /usr/bin 权限问题
- WPF使用代码创建数据模板DataTemplate
- 规范你的代码:AndroidStudio|规范你的代码:AndroidStudio 一键生成MVP模板代码
- java|新年快乐呀 , 给大家送上字节 Java 架构师面试汇总 + 架构师简历模板
- 【文艺风格·PPT模板】创意动物卡通汇报版
- Code|Code Forces-681C(模拟题,优先队列,设计STL)
- 2018-05-29|2018-05-29 Django 模板文件引入静态文件