set集合

1.头文件

#include<set>

2.集合的输入 insert()

int n;cin>>n; //个数 
	int num;
	set<int>A;
	
	while(n--){
		cin>>num;
		A.insert(num);  //插入元素 
	}

3.vector 和vector::iterator 的不同

1.verctor是声明向量容器; 例如 verctor v,就是创建了一个名字叫v的向量容器。
2.vector::iterator是定义向量迭代器 例如,
vector::iterator it 就可以
for(it=v.begin();it!=v.end();it++)
cout<<*it<<endl; 就把里面的内容都输出了

同理,集合是set< int>::iterator

set<int>::iterator it;
for(it=A.begin();it!=A.end();it++){
	cout<<*it<<endl;
} 

4.有序不重复
原文链接

#include<stdio.h>
#include<set>
using namespace std;
int main()
{
	set<int>s;
	s.insert(3); 
	s.insert(1);
	s.insert(2);
	s.insert(1);
	set<int>::iterator it;            
	for(it=s.begin();it!=s.end();it++)  //使用迭代器进行遍历 
	{
		printf("%d\n",*it);
	}
	return 0;
}
//输出结果 : 1 2 3     一共插入了4个数,但是集合中只有3个数并且是有序的,
//可见之前说过的set集合的两个特点,有序和不重复。

5.当set集合中的元素为结构体时,该结构体必须实现运算符‘<’的重载

#include<stdio.h>
#include<set>
#include<string>
using namespace std;
struct People
{
	string name;
	int age;
	bool operator <(const People p) const  //运算符重载 
	{
		return age<p.age;       //按照年龄由小到大进行排序 
	}
}; 
int main()
{	
	set<People>s;
	s.insert((People){"张三",14});
	s.insert((People){"李四",16});
	s.insert((People){"王二麻子",10});
	set<People>::iterator it;            
	for(it=s.begin();it!=s.end();it++)  //使用迭代器进行遍历 
	{
		printf("姓名:%s 年龄:%d\n",(*it).name.c_str(),(*it).age);
	}
	return 0;
}
/*
输出结果
 姓名:王二麻子 年龄:10
姓名:张三 年龄:14
姓名:李四 年龄:16 
*/ 

结果是按照年龄由小到大的顺序排列。
6.用法

begin();            // 返回指向第一个元素的迭代器
end();              // 返回指向最后一个元素的迭代器
clear();            // 清除所有元素
count();            // 返回某个值元素的个数
empty();            // 如果集合为空,返回true
equal_range();      //返回集合中与给定值相等的上下限的两个迭代器
erase()–删除集合中的元素
find()–返回一个指向被查找到元素的迭代器
get_allocator()–返回集合的分配器
insert()–在集合中插入元素
lower_bound()–返回指向大于(或等于)某值的第一个元素的迭代器
key_comp()–返回一个用于元素间值比较的函数
max_size()–返回集合能容纳的元素的最大限值
rbegin()–返回指向集合中最后一个元素的反向迭代器
rend()–返回指向集合中第一个元素的反向迭代器
size()–集合中元素的数目
swap()–交换两个集合变量
upper_bound()–返回大于某个值元素的迭代器
value_comp()–返回一个用于比较元素间的值的函数

代码

#include<iostream>
#include<set>  //集合 
using namespace std;

int main(){
	int n;cin>>n; //个数 
	int num;
	set<int>A;
//输入
	while(n--){
		cin>>num;
		A.insert(num);  //插入元素 
	}
//输出
	set<int>::iterator it;
	for(it=A.begin();it!=A.end();it++){
		cout<<*it<<endl;
	} 
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DDouble-

你的鼓励是我最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值