c++ set(集合)
集合中的元素有三个特征:1.1 确定性(集合中的元素必须是确定的)。1.2 互异性(集合中的元素互不相同)。1.3 无序性(集合中的元素没有先后之分)。set容器是由红黑树实现的。在这里我们尽量把STL容器当作黑箱子使用,不需要知道原理,会用就行。由于set的一些特性,我们可以用来做一些特定的工作。十分方便。2.4 主要函数的使用方法2.4.1 声明一个set容器set<int> s;
·
- 集合中的元素有三个特征:
1.1 确定性(集合中的元素必须是确定的)。
1.2 互异性(集合中的元素互不相同)。
1.3 无序性(集合中的元素没有先后之分)。 - set容器是由红黑树实现的。在这里我们尽量把STL容器当作黑箱子使用,不需要知道原理,会用就行。
- 由于set的一些特性,我们可以用来做一些特定的工作。十分方便。
2.4 主要函数的使用方法
2.4.1 声明一个set容器
set<int> s;
//下面用set<int> s作为例子 初始s:{1,2,3,4,5};
2.4.2 清空集合
s.clear();
//清空后的 s:{};
2.4.3 插入一个元素x
s.insert(x);
//如果x等于1,那么插入后的 s:{1,2,3,4,5};(互异性)
//如果x等于6,那么插入后的 s:{1,2,3,4,5,6};
前面我们提到set由树实现,那么插入一个元素的平均时间复杂度应该是O(logn)的,并且在用迭代器遍历set时,得到的元素应该是有序的。
2.4.4 查询集合里有无元素x
int hav = s.count(x);
同样,平均时间复杂度是O(logn)
因为set的特性,集合里要么有x(表示为1),要么没有(为0)。
2.4.5 在集合里找到x的位置,返回迭代器
set<int>::iterator it = s.find(x);
如果找到了x,那么it指向x所在的位置
2.4.6 遍历集合所有元素
for(set<int>::iterator it = s.begin();it!=s.end();it++)
{
int x = *it;cout<<x<<",";
}
或者
for(auto x:s)
{
cout<<x<<" ";//这里的x就是元素值
}
//两种方法输出的结果都是1,2,3,4,5,
2.4.7 判断是否为空集
bool isempty = s.empty();
2.4.8 求集合元素个数
int n = s.size();
2.4.9 删除元素x
s.erase(x);
//如果x等于4,那么删除后的集合 s:{1,2,3,5};
更多推荐
所有评论(0)