-
set
一、简介
1. 头文件
# include <set>
//注意,STL头文件没有扩展名.h
2. 介绍
(1)set内部封装了二叉树(红黑树),插入删除查找效率比用其他序列容器高
原因:set、map在插入的时候只需要把节点的指针指向新的节点;删除的时候只需把指向删除节点的指针指向其他节点。这里进行的操作本质上就是指针的变换,没有发生内存的拷贝和移动。而在查找时,使用的是二分查找,时间复杂度为logN,因此速率更高。
(2)set内部不允许有重复元素,且set内部元素有序,这一点与map类似。不同的是,map中存储键值对,set仅存储键
(3)set是STL的一个关联容器,通过键值进行查找,不支持随机访问
"随机访问"是指一种迭代器类型,它允许在常数时间内访问容器中的任何元素,与顺序访问(如链表中的迭代器)形成对比,顺序访问需要遍历元素以到达目标位置。
一些关于随机访问迭代器的特点:
- 常数时间访问:无论容器的大小如何,访问任何元素都需要相同的时间。