STL整理之set

本文详细介绍了C++ STL中的set容器,包括其作为数学集合的特性,内部实现的红黑树结构,以及set的主要操作如插入、删除、查找等。同时对比了set与multiset的区别,并给出了相关操作的时间复杂度。
摘要由CSDN通过智能技术生成

转载请注明出处,部分内容引自李煜东《算法竞赛进阶指南》


前置知识: C++C C + + 、 C 语言入门


Set S e t 是什么

Set S e t C++STL C + + S T L 中提供的容器, set s e t 是数学上的集合——具有唯一性,即每个元素只出现一次,而 multiset m u l t i s e t 则是可重集,两者的内部实现是一棵红黑树,它们支持的函数基本相同

Set S e t 的相关操作

头文件

#include<set>

声明:

像这样:

set<类型>名称;

比如:

set<int>s;
set<vector<int> >s;     //vector中提供重载<
set<set<int> >s;    //平衡树嵌套,哈哈
multiset<double>s;

就像其他需要排序的数据类型一样,为一个结构体的 set s e t ,需要重载小于号

struct node{
    ......;
};
set<node>s;
bool operator <(const node &ai,const node &bi)
{
    return ai.x>bi.x;
}

set.size() s e t . s i z e ( )

统计 set s e t 中元素个数,函数返回一个整形变量,表示 set s e t 中元素个数,时间复杂度O(1)

用法:名称.size();
eg.
int num=s.size();

set.empty() s e t . e m p t y ( )

检查 set s e t 是否为空,返回一个 bool b o o l 型变量,1表示 set s e t 为空,否则为非空,时间复杂度O(1)

用法:名称.empty();
eg.
if(s.empty())
    cout<<"Myset is Empty."<<endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值