C++ STL容器简介

一时失言乱红尘 2023-07-10 08:59 47阅读 0赞

1.容器分类

STL序列容器:vector、string、deque、list

STL关联容器:set、multiset、map、multimap

STL适配容器:stack、queue、priority_queue

2.容器简介

1.vector

vector内部是使用动态数组的方式实现的,如果动态数组的内存不够用,就要动态地重新分配,一般是当前大小的两倍,然后把原数组的内容拷贝过去,所以,在一般情况下,其访问速度同一般数组,只有在重新分配发生时,其性能才会下降。

特点:它能非常好地支持随机存取,查找十分快捷,插入、删除慢。

2.list

list由双向链表实现的,因此它的内存空间可以是不连续的。只能通过指针来进行数据的访问。

特点:随机存取变得非常没有效率,插入和删除很有效率。

3.deque

称为双向队列,表面上与vector非常相似,甚至能在许多实现中直接替换vector。

特点:deque使用一段一段的定量内存,在进行内存扩充时也只是加一段定量内存,deque头尾两端分别做插入和删除操作都是常数时间

4.set、multiset

特点:内部的元素依据其值自动排序,Set内的相同数值的元素只能出现一次,Multisets内可包含多个数值相同的元素,内部由红黑树实现,平均和最坏情况下的插入、删除、查找时间都是O(lgn)。

5.map、multimap

特点:内部的元素依据其值自动排序,map内的相同数值的元素只能出现一次,multimap内可包含多个数值相同的元素,内部由红黑树实现,平均和最坏情况下的插入、删除、查找时间都是O(lgn)。

6.hashmap

hashmap底层用的哈希表,它的优点在于它的各项操作的平均时间复杂度接近常数。不是标准的一部分。

发表评论

表情:
评论列表 (有 0 条评论,47人围观)

还没有评论,来说两句吧...

相关阅读

    相关 c++ 容器STL

    STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的