1. 集合中的元素有三个特征:
    1.1 确定性(集合中的元素必须是确定的)。
    1.2 互异性(集合中的元素互不相同)。
    1.3 无序性(集合中的元素没有先后之分)。
  2. set容器是由红黑树实现的。在这里我们尽量把STL容器当作黑箱子使用,不需要知道原理,会用就行。
  3. 由于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};


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐