C++:STL

1.vector底层数据结构为数组,支持快速随机访问

vector是一段连续的内存块
vector是在尾部插入和删除元素,算法时间复杂度为O(1),常数阶,其他元素的插入和删除为O(n)线性阶。
适合高效的随机存储
可以动态的调整元素占用的空间

初始化
vector<类型> 对象;  //创建对象
vector<类型> 对象(n);  //创建对象并申请n个空间
vector<类型> 对象(n,m);  //创建对象申请n个空间并赋初值为m
vector<类型> 对象(对象);  //对象赋值初始化
vector<类型> 对象(起始位置,终止位置+1);  //申请一个终止位置大小的对象

元素插入
insert(iterator pos,const T& x); //在pos的前面加入元素x

元素的删除
erase(iterator pos);  //删除指定pos位置的元素
erase(iterator first,iterator last);  //删除[first,last)之间的元素

元素的反向遍历
reverse_iterator rend(),m.rend()函数返回反向遍历的结束地址
reverse_iterator rbegin(),m.rbegin()函数返回反向遍历的首地址

vector的元素交换
m1.swap(m2);  

调整vector数据空间的大小
reserve(大小);  //需要调整为的大小

2.list底层数据结构为双向链表,支持快速增删

list的归并
splice(pos,list &x);  //将x链表归并到pos位置之前,且清空list x。
splice(pos,list&,iterator i);  //将一个list的迭代器i所指的元素,归并到当前的list的pos前一个元素,并将被归并的元素从原list中删除。
merge(list &x);  //将list对象x归并到当前list,并清空list x。
merge函数在使用前必须是排好序的,且merge默认从小到大排序。
list的函数排序
l.sort();  // 默认从小到大排序

底层是链表,所以它对插入、删除元素性能是最好的,但是查询性能非常差
适合大量的插入和删除操作而不关心随机存储的要求

3.deque支持在首部和尾部快速插入,算法的时间复杂度为O(1)

多个连续的内存块
兼顾了数组和链表的优点,它是分块的链表和多个数组的结合,其比list查询性能好,比vector的查询性能差,比list的插入和删除性能差,比vector的好
需要随机存储和两端数据的插入和删除,dqueue最佳

4.stack底层一般用23实现,封闭头部即可,不用vector的原因是容量大小有限制,扩容耗时
后进先出,使用现有序列容器实现,默认使用双端队列deque实现
stack<int,list< int>> s;
入栈:push()
出栈:pop();
栈顶元素:top();并不删除元素
5.queue是一种先进先出表,线性存储,插入一端为队尾,删除一端为队首。默认使用双端队列deque来实现。
back(); //读取队尾元素
front(); //读取队首元素
6.45是适配器,而不叫容器,因为是堆容器的再封装
7.priority_queue的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现
出队时是当前队列中的最大元素出队。
8.set底层数据结构为红黑树的平衡二叉检索树,有序,元素不重复
9.multiset 底层数据结构为红黑树,有序,元素可重复
10.map底层数据结构为红黑树,有序,不重复
11.multimap底层数据结构为红黑树,有序,可重复
12.hash_set底层数据结构为hash表,无序,不重复

13.hash_multiset底层数据结构为hash表,无序,可重复
14.hash_map底层数据结构为hash表,无序,不重复
15.hash_multimap底层数据结构为hash表,无序,可重复
16.slist单链表容器
insert_after(pos,const T& x); //在pos之后的位置插入元素x

17.bit_vector位向量容器
bit_vector容器的每个元素是一个bit位值,取0或者1。分配在以字为单位的连续字节快。

bit_vector v(10);  //申请10个位的对象,每个bit默认是1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值