当前位置 博文首页 > 小李的博客:C++ STL Set常用用法详解

    小李的博客:C++ STL Set常用用法详解

    作者:[db:作者] 时间:2021-09-17 12:24

    6.2 set的常见用法详解

    ? 是一个内部自动有序且不含重复元素的容器。 要使用set,需要加头文件#include

    1. set的定义

    ? set<typenname> name;

    ? 其中typename可以是任何基本类型,例如int、double、char、结构体等,也可以是STL标准容器,例如vector、set、queue等

    2.set容器内元素的访问

    ? set<typename>::iterator it;

    ? 注:set只能通过迭代器访问。且除vector和string之外的STL容器都不支持* (it+i)的访问方式

    #include <bits/stdc++.h>
    #include <set>
    using namespace std;
    int main(){
    	set<int> s;
    	s.insert(3);
    	s.insert(3);
    	s.insert(1);
    	s.insert(5);
    	//注意这里是it != s.end() 
    	for(set<int>::iterator it = s.begin(); it != s.end(); it++){
    		cout<<(*it)<<' ';
    	}
    	return 0;
    }
    输出结果:
        1 3 5
    

    3. set常用函数实例解析

    (1). insert(x)可将x出入set容器中,并自动递增排序和去重

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

    (3). erase()有两种用法: 删除单个元素、删除一个区间内的所有元素

    · st.erase(it), it为所需要删除元素的迭代器
    · st.erase(value),value为所需要删除元素的值
    · st.erase(first, last),可以删除一个区间内的所有元素

    (4). size()

    (5). clear()

    4. set的常见用途

    ? set主要作用就是自动去重并按升序排序,因此碰到需要去重但是却不方便直接开数组的情况,可以尝试用set解决

    // 5、Set集合
    #include <bits/stdc++.h>
    #include <set>
    using namespace std;
    int main(){
    	set<int> s;
    	s.insert(1);		//插入一个元素
    	s.insert(2);
    	s.insert(3);
    	cout<<"集合的个数:"<<s.size()<<endl;
    	if(s.find(2) != s.end()){		//返回set中对应值为value的迭代器
    		cout<<"集合中有2这个元素"<<endl;
    	} else{
    		cout<<"集合中没有2这个元素"<<endl;
    	}
    	s.erase(1);		//在集合Set容器中删除这个值
    	if(s.find(1) != s.end()){		//返回set中对应值为value的迭代器
    		cout<<"集合中有1这个元素"<<endl;
    	} else{
    		cout<<"集合中没有1这个元素"<<endl;
    	}
    	return 0;
    } 
    

    集合的个数:3
    集合中有2这个元素
    集合中没有1这个元素

    cs