STL set 详细用法
一个集合(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 详细用法的更多相关文章
- STL map 详细用法
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个称为该关键字的值)的数据 处理能力. 需要的库 #include <map> ...
- C++中的STL中map用法详解(转)
原文地址: https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html C++中的STL中map用法详解 Map是STL的一个关联容器,它提供 ...
- map的详细用法 (转
map的详细用法: map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能 力,由于这个特性,它完成有可能在我 ...
- C#播放声音的四种方法 +AxWindowsMediaPlayer的详细用法
C#播放声音的四种方法 第一种是利用DirectX 1.安装了DirectX SDK(有9个DLL文件).这里我们只用到MicroSoft.DirectX.dll和 Microsoft.Directx ...
- 在DOS下的DEBUG命令的详细用法
在DOS下的DEBUG命令的详细用法 名称 解释 格式 a (Assemble) 逐行汇编 a [address] c (Compare) 比较两内存块 c range address d (Dump ...
- __declspec关键字详细用法
__declspec关键字详细用法 __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式.其它的有关存储方式的修饰符如static与extern等是C和C++语言的ANSI ...
- CString.Format的详细用法(转)
CString.Format的详细用法(转) 在MFC程序中,使用CString来处理字符串是一个很不错的选择.CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的字符串.CS ...
- IFRAM的详细用法
IFRAM的详细用法: IFRAM的详细用法: <IFRAME>用于设置文本或图形的浮动图文框或容器. BORDER <IFRAME BORDER="3"& ...
- 【转】java.util.vector中的vector的详细用法
[转]java.util.vector中的vector的详细用法 ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.uti ...
随机推荐
- python数据库-安装问题总结(48)
一.ERROR1698(28000):Access denied for user root@localhost错误 我的操作系统是ubuntu: 我的MySQL版本是: 安装完成后,登录mysql的 ...
- .NET分布式框架 | Orleans 知多少
引言 公司物联网项目集成Orleans以支持高并发的分布式业务,对于Orleans也是第一次接触,本文就分享下个人对Orleans的理解. 这里先抛出自己的观点:Orleans 是一个支持有状态云生应 ...
- Disruptor 详解 一
这篇博客将主要通过几个示例,简单讲述 Disruptor 的使用方法: 一.disruptor 简介 Disruptor 是英国外汇交易公司 LMAX 开发的一个无锁高性能的线程间消息传递的框架.目前 ...
- SpringBoot系列——CORS(跨源资源共享)
前言 出于安全原因,浏览器禁止ajax调用当前源之外的资源(同源策略),我们之前也有写个几种跨域的简单实现(还在问跨域?本文记录js跨域的多种实现实例),本文主要详细介绍CORS,跨源资源共享,以及如 ...
- 基数排序的可复用实现(C++11/14/17/20)
基数排序,是对整数类型的一种排序方法,有MSD (most significant digit)和LSD (least significant digit)两种.MSD将每个数按照高位分为若干个桶(按 ...
- Linux安装httpd
一.相关下载 1.httpd下载 官网下载:http://httpd.apache.org/ 或者 百度网盘链接: https://pan.baidu.com/s/1JPdU28tv6rePKJanB ...
- JVM监控jconsole
1. 描述 程序在开发过程中,有可能会发生CPU飙高.内存溢出等问题或系统在后期调优阶段,不可避免的要监控JVM情况,JDK自带的Jconsole监控工具,结合Tomcat使用非常方便,占用内存小 ...
- Java设计模式学习笔记(五) 单例模式
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 使用单例模式的原因 以Windows任务管理器为例,在Windows系统中,任务管理器是唯 ...
- 5.Ray-Handler之ToReadHandler编写
如图右上角所示,Ray中有两类Handler(SubHandler和PartSubHandler),在使用中,SubHandler派生Actor的CoreHandler,PartSubHandler派 ...
- I/O:FileLock
FileLock: /* 文件锁定要么是独占的,要么是共享的.共享锁定可阻止其他并发运行的程序获取重叠的 独占锁定,但是允许该程序获取重叠的共享锁定.独占锁定则阻止其他程序获取任一类型的重叠锁 定.一 ...