c++ set的用法

本文详细介绍了C++标准库中的set容器,包括其特性、常用函数和迭代器的使用。通过示例代码展示了如何插入、删除元素,以及查找、遍历set的操作。此外,还演示了如何利用lower_bound和upper_bound函数进行范围查找。
摘要由CSDN通过智能技术生成

1. 特性

set即表示集合。set的特性是,所有元素都会根据元素的键值自动排序,并且set会自动去重,即set中不会出现相同元素。

2.函数

set的头文件为#include<set>
其具有以下函数:

1.q.insert(x):将x插入q中
2.q.erase(x):将x从q中删除,返回0或1,0表示x不存在
3.q.clear(x):清空q
4.q.empty():判断q是否为空
5.q.size():返回q中的元素个数
6.q.find(x):查找x,若不存在,则返回q,end()
7.q.lower_bound(x):返回一个迭代器,指向第一个不小于x的元素
8.q.upper_bound(x):返回一个迭代器,指向第一个大于x的元素
9.q.rend():返回第一个元素的前一个元素迭代器
10.q.begin():返回第一个元素的迭代器
11.q.end():返回最后一个元素的迭代器

3. 迭代器

set::iterator i;

4.代码举例

#include<iostream>
#include<set>
using namespace std;

set<int> q;
set<int,greater<int>> t;//降序排序 

int main()
{
	int n;
	cin>>n;
	
	for(int i=0;i<n;i++)
	{
		int x;
		cin>>x;
		q.insert(x);//将x插入至q 
	}
	
	int m;
	cin>>m;
	
	while(m--)
	{
		set<int>:: iterator i=q.begin();//迭代器i指向第一个元素的地址
		int y;
		cin>>y;
		if(q.find(y)!=q.end())//可以在q中找到y
		{
			cout<<"yes"<<endl;
			q.erase(y);//删除元素y 
		}
		else
		{
			i=q.lower_bound(y);//找到第一个不小于y的元素 
			if(i!=q.end())cout<<(*i)<<endl;
			i=q.upper_bound(y);//找到第一个大于y的元素 
			if(i!=q.end())cout<<(*i)<<endl;
		}	 
	} 
	
	if(!q.empty())//如果q不为空
	{
		cout<<q.size()<<endl;//输出q的元素个数
		q.clear();//清空q	
	} 
	
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值