STL中vector/map/set实现原理

来源:互联网 发布:如何看待网络暴力 编辑:程序博客网 时间:2024/06/06 16:38

(1)vector是顺序容器,本质是一个动态数组,支持随机存取、插入、删除、查找等操作。内存中占用一段连续空间。初始会分配一段内存空间。当元素超出范围时,vector会重新开辟空间,由stl中的allocator分配,新空间大小是原先的2倍,然后将旧数据移动到新空间中,释放旧空间。一旦空间重新分配,指向原vector的所哟迭代器就会失效。

(2)map是关联容器,以键值对(key-value)的形式进行存储。查找方便。关键字起到索引的作用,值则表示该索引相关联的数据。内部以红黑树的结构实现,插入删除等操作都在O(logn)时间内完成。

(3)set是关联容器,每个元素仅包含一个关键字。set支持高效的关键字查询操作,可以判断一个给定关键字是否存在于set中。内部采用红黑树实现,支持高效插入、删除等操作。

阅读全文
0 0
原创粉丝点击