如何使用C STL中的set
如何声明一个set在C STL中,set是一个十分有用的容器。要声明一个set,可以使用以下语法:```set name;```其中value_type是set中所要存储的元素类型,例如int、s
如何声明一个set
在C STL中,set是一个十分有用的容器。要声明一个set,可以使用以下语法:
```
set
```
其中value_type是set中所要存储的元素类型,例如int、string或自定义的结构体名称。声明set时还要包含set头文件,即`include
set中的元素类型必须定义小于号
set的内部实现是一棵红黑树,因此set中的元素类型必须定义小于号。C 自带的元素类型(如int、string)已经帮我们定义好了小于号,它们在set中会按照从小到大的顺序排列。如果是自定义的结构体,则需要学会如何重载运算符。
set的众多内置函数
set提供了许多内置函数来操作和访问元素,以下是常用的几个函数:
1. insert(x)/erase(x):在set中插入/删除元素x,其中x的类型必须是声明该set时的类型。时间复杂度为O(logn),其中log以2为底,n为set中的元素个数。如果x不在该set中,则在erase(x)时什么都不会删除。
2. begin()/end():返回该set的首/尾迭代器。因为是迭代器,如果想转换成声明时的类型,要在前面加上“*”。例如,声明了set
3. empty()/size():判断set是否为空/返回set的大小(即元素个数)。所有STL容器都有这两个内置函数,时间复杂度为O(1)。
4. clear():清空一个set,时间复杂度为O(n)。
5. find(x):查找set中是否有元素x,如果有,则返回指向该元素的迭代器,否则返回end()。时间复杂度为O(logn)。
set常用于排序和去重
由于set的特性,它常常被用来进行排序和去重。以下代码能够实现这两个功能:
```cpp
set
// 插入元素
(5);
(2);
(8);
(2); // set会自动去重,只会记录一次
// 输出排序后的元素
for (auto it (); it ! numbers.end(); it) {
cout << *it << " ";
}
```
以上就是set的大部分使用方法与应用。尽管set的大部分内置函数时间复杂度较高,但如果运用得当,能够帮助我们减少很多麻烦。