C++标准模板库--set

1. set是一个内部自动有序而且不含重复元素的容器,有的时候需要去除重复的元素,使用这个容器的话就非常方便了,而且不用考虑容器的长度,并且set还可以实现自动排序

使用set需要添加set头文件,即#include<set>,并且在头文件下加上using namespace std;

2. 下面是set的一些常用用法:

① set的定义:

set<typename> name; typename为类型名,与vector或者是其他的STL都是类似的,typename可以是任意的基本数据类型,int、double、char这些,还可以是一个STL容器,需要注意的是假如typename是一个STL容器,需要在>>符号之间加上空格

② set容器内元素的访问

与之前的vector不同的是,set只能通过迭代器来进行访问

set<typename> ::iterator it;

set<int>::iteratot it;
set<char>::iteratot it;

这样就得到了迭代器it,并且通过迭代器*it来访问set里面的元素

下面是具体的代码:

#include<iostream>
#include<set>
using namespace std;
int main(void){
	set<int> st;
	st.insert(3);
	st.insert(2);
	st.insert(8);
	st.insert(10);
	st.insert(10);
	for(set<int>::iterator it = st.begin(); it != st.end(); it++){
		cout << *it << " "; 
	} 
	return 0;
} 

3. 常用函数

(1)insert函数

insert(x)将x插入到set容器中,并且自动排序与去重

(2)find函数

find(value)返回的是set中对应值为value的迭代器

下面是具体的代码:

#include<iostream>
#include<stdio.h>
#include<set>
using namespace std;
int main(void){
	set<int> st;
	st.insert(3);
	st.insert(2);
	st.insert(8);
	st.insert(10);
	st.insert(10);
	set<int>::iterator it = st.find(2);
	cout << *it; 
	return 0;
} 

(3)erase()函数

① 删除单个元素:有两种方法,一种是st.erase(it),it为所需要删除元素的迭代器,第二种方法是st.earse(value)value为所需要删除元素的值

② 删除一个区间内的所有元素

st.erase(first,last)可以删除一个区间内的所有元素,其中first为需要删除区间的起始迭代器,而last为所需要删除区间的末尾迭代器的下一个地址,也即是删除[first,last)

下面是具体的代码:

#include<iostream>
#include<stdio.h>
#include<set>
using namespace std;
int main(void){
	set<int> st;
	st.insert(3);
	st.insert(2);
	st.insert(8);
	st.insert(10);
	st.insert(10);
	st.erase(st.find(2));
	for(set<int>::iterator it = st.begin(); it != st.end(); it++){
		cout << *it << " "; 
	} 
	return 0;
} 
#include<iostream>
#include<stdio.h>
#include<set>
using namespace std;
int main(void){
	set<int> st;
	st.insert(3);
	st.insert(2);
	st.insert(8);
	st.insert(10);
	st.insert(10);
	st.erase(st.begin(), st.end());
	cout << st.size() << " "; 
	return 0;
} 

(4)clear用来清空set中的所有元素

下面是具体的代码:

#include<iostream>
#include<stdio.h>
#include<set>
using namespace std;
int main(void){
	set<int> st;
	st.insert(3);
	st.insert(2);
	st.insert(8);
	st.insert(10);
	st.insert(10);
	st.clear();
	cout << st.size() << " "; 
	return 0;
} 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值