一个集合(set)是一个容器,它其中所包含的元素的值是唯一的。

用到的库

#include <set>

定义

最简单:

set<int> a;

set和其他的stl一样,都支持自定义。

因为set会自动将元素从小到大排序,所以我们可以设定它的比较函数,这里与优先队列十分相似。

法1 利用自定义比较函数:

#include<stdio.h>
#include<set>
#include<string>
using namespace std;
struct People
{
string name;
int age;
}; struct cmp {
bool operator ()(People a, People b)
{
if(a.name==b.name)return false;
return a.age<b.age; //按照年龄由小到大进行排序
}
}; set<People,cmp>s;

法2 运算符重载

#include<stdio.h>
#include<set>
#include<string>
using namespace std;
struct People
{
string name;
int age;
bool operator <(const People p) const //运算符重载
{
if(name==p.name)return false;//按名字去重
return age<p.age; //按照年龄由小到大进行排序
} }; set<People>s;

法3 友元函数

#include<bits/stdc++.h>

using namespace std;

struct People
{
string name;
int age;
friend bool operator <(const People & a,const People & b)
{
if(a.name==b.name)return false;//按名字去重
return a.age<b.age; //按照年龄由小到大进行排序
} }; set<People>s;

遍历

也是需要一个迭代器进行访问:

set<People>::iterator it;
for(it=s.begin();it!=s.end();it++)
{
printf("姓名:%s 年龄:%d\n",(*it).name.c_str(),(*it).age);
}

访问set的值需要采用*t的方式。

其他用法:

begin();                        第一个元素地址
clear();                         清楚set容器
count(x);                      x元素的个数
empty();                       是否为空
end();                           最后一个元素后面一个的地址
erase(x);                      删除元素x
find(x);                         查找元素x,返回地址,若没有则返回end
insert(x);                      增加元素x
size();                           元素个数

STL set 详细用法的更多相关文章

  1. STL map 详细用法

    Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个称为该关键字的值)的数据 处理能力. 需要的库 #include <map> ...

  2. C++中的STL中map用法详解(转)

    原文地址: https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html C++中的STL中map用法详解   Map是STL的一个关联容器,它提供 ...

  3. map的详细用法 (转

    map的详细用法: map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能 力,由于这个特性,它完成有可能在我 ...

  4. C#播放声音的四种方法 +AxWindowsMediaPlayer的详细用法

    C#播放声音的四种方法 第一种是利用DirectX 1.安装了DirectX SDK(有9个DLL文件).这里我们只用到MicroSoft.DirectX.dll和 Microsoft.Directx ...

  5. 在DOS下的DEBUG命令的详细用法

    在DOS下的DEBUG命令的详细用法 名称 解释 格式 a (Assemble) 逐行汇编 a [address] c (Compare) 比较两内存块 c range address d (Dump ...

  6. __declspec关键字详细用法

    __declspec关键字详细用法 __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式.其它的有关存储方式的修饰符如static与extern等是C和C++语言的ANSI ...

  7. CString.Format的详细用法(转)

    CString.Format的详细用法(转) 在MFC程序中,使用CString来处理字符串是一个很不错的选择.CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串.CS ...

  8. IFRAM的详细用法

    IFRAM的详细用法:   IFRAM的详细用法:  <IFRAME>用于设置文本或图形的浮动图文框或容器. BORDER <IFRAME BORDER="3"& ...

  9. 【转】java.util.vector中的vector的详细用法

    [转]java.util.vector中的vector的详细用法 ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.uti ...

随机推荐

  1. linux命令积累

    lsof -i: //根据端口号查相关信息 //杀进程 ps -ef|grep appName //根据进程名称查找相关信息 grep -r "关键词" 目录 //在制定目录下根据 ...

  2. 西门子S7-1200与 G120系列变频器USS通信

    西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,作为经常与SINAMICS G120系列变频器共同使用的PLC,其USS通信协议的使用一直在市场上有着非常广泛的应用.本文将主要介绍如何 ...

  3. 从零开始基于go-thrift创建一个RPC服务

    Thrift 是一种被广泛使用的 rpc 框架,可以比较灵活的定义数据结构和函数输入输出参数,并且可以跨语言调用.为了保证服务接口的统一性和可维护性,我们需要在最开始就制定一系列规范并严格遵守,降低后 ...

  4. 关于pcl索引的使用

    最近开始动手做实验,之前写了一个小实验利用到了PCL库中的索引: 现在在写利用PCL中的RegionGrowing类来分割生成面片,无论是迭代生成还是进行提取都需要用到pcl库中定义的索引, 虽然搞的 ...

  5. SpringBoot整合Swagger和Actuator

    前言 本篇文章主要介绍的是SpringBoot整合Swagger(API文档生成框架)和SpringBoot整合Actuator(项目监控)使用教程. SpringBoot整合Swagger 说明:如 ...

  6. python的@修饰符

    ‘@’引用已有的函数,对下面的函数进行修饰.引用函数必须放在修饰函数的上面,引用函数的返回值,返回给被修饰的函数 一个简单的栗子: def funA(fn): print('A') # 输出A fn( ...

  7. .net持续集成cake篇之cake介绍及简单示例

    cake介绍 Cake 是.net平台下的一款自动化构建工具,可以完成对.net项目的编译,打包,运行单元测试,集成测试甚至发布项目等等.如果有些特征Cake没有实现,我们还可以很容易地通过扩展Cak ...

  8. 神经大条的我-->记录我那些容易忘记的知识点

    1.springmvc中每次进来的request都是保存在ThreadLocal里的,所以不会存在线程问题.可以直接用@Autowired全局注入  参考地址:https://my.oschina.n ...

  9. UVA10375 选择与除法 Choose and divide 题解

    题目链接: https://www.luogu.org/problemnew/show/UVA10375 分析: 这道题可以用唯一分解定理来做. 什么是唯一分解定理?百度即可,这里也简介一下. 对于任 ...

  10. python基础-python解释器多版本共存-变量-常量

    一.编程语言的发展史 机器语言-->汇编语言-->高级语言,学习难度及执行效率由高到低,开发效率由低到高 机器语言:二进制编程,0101 汇编语言:用英文字符来代替0101编程 高级语言: ...