常用STL使用指北

常用STL使用指北

set和multiset

set和multiset都是基于红黑树(显然是一个二叉搜索树)的STL。

定义

我们可以使用(multi)set<元素类型>名称来定义一个(multi)set

自定义排序

默认排序方式都是从小到大。因为结构体之间没有定义<,所以我们需要自定义一个比较函数。

如果元素不是结构体:

//自定义比较函数myComp,重载“()”操作符
struct myComp
{
    bool operator()(const int &a,const int &b)
    {
        return a > b;//从大到小排序
    }
}
set<int,myComp>s;
set<int,myComp>::iterator it;

如果元素是结构体:

struct Info
{
    string name;
    float score;
    //重载“<”操作符,自定义排序规则
    bool operator < (const Info &a) const
    {
        //按score从大到小排列
        return a.score<score;
    }
}

set<Info> s;
set<Info>::iterator it;

或者

//自定义比较函数myComp,重载“()”操作符
struct myComp
{
    bool operator()(const your_type &a,const your_type &b)
    {
        return a.data > b.data;//按照data从大到小排序
    }
}
set<your_type,myComp>s;
set<your_type,myComp>::iterator it;

原文地址:https://www.cnblogs.com/GavinZheng/p/11615650.html

时间: 2024-10-08 06:45:56

常用STL使用指北的相关文章

Markdown 标记语言指北 - 源码

这是上一篇博客的源代码. 这是班刊约稿的一篇文章. 全文约6000字, 预计需要 60 分钟读完. # Markdown 标记语言指北 #### TOC 1. [什么是 Markdown?](#%E4%BB%80%E4%B9%88%E6%98%AF-Markdown) 1. [Markdown 可以用来干什么?](#Markdown-%E5%8F%AF%E4%BB%A5%E7%94%A8%E6%9D%A5%E5%B9%B2%E4%BB%80%E4%B9%88) 1. [第一步?](#%E7%AC

webpack 最佳配置指北

webpack 最佳配置指北 前言 对于入门选手来讲,webpack 配置项很多很重,如何快速配置一个可用于线上环境的 webpack 就是一件值得思考的事情.其实熟悉 webpack 之后会发现很简单,基础的配置可以分为以下几个方面: entry . output . mode . resolve . module . optimization . plugin . source map . performance 等,本文就来重点分析下这些部分. 内附一张 webpack 零配置对比图片,关

ansible使用指北(二)

前言在上一篇文章里我们了解了ansible的常用模块,今天我们来了解下ansible-playbook,ansbile-playbook是一系统ansible命令的集合,其利用yaml 语言编写,ansbile-playbook命令根据自上而下的顺序依次执行. playbook通过ansible-playbook命令使用,它的参数和ansible命令类似,如参数-k(–ask-pass) 和 -K (–ask-sudo) 来询问ssh密码和sudo密码,-u指定用户,这些指令也可以通过规定的单元

Apache OFBiz指北1-概述

Apache ofbiz是Apache Open for Business的简写,顾名思义,这是一个开源的商业业务系统,项目的最新版本是12.04. 说起这个项目,用过的人(包括我在内)多半都是又爱又恨,爱是因为它为这个项目的核心内容非常的丰富,从前端销售,如网店,目录管理,内容管理:到后端的业务系统,订单,库存,采购,物流,制造(这个功能我没有用过,不熟悉)等:以及企业管理的一些模块,如财务,绩效,协作等.这些基本上把一个销售型企业的常见业务都囊括了.项目自己也实现了一套开发框架,如果是一个初

[转] iOS开发者的Weex伪最佳实践指北

[From] http://www.cocoachina.com/ios/20170601/19404.html 引子 这篇文章是笔者近期关于Weex在iOS端的一些研究和实践心得,和大家一起分享分享,也算是对学习成果的总结.文章里面提到的做法也许不是最佳实践,也许里面的方法称不算是一份标准的指南手册,所以标题就只好叫"伪最佳实践指北"了.有更好的方法欢迎大家一起留言讨论,一起学习. 由于笔者不太了解Android,所以以下的文章不会涉及到Android. 一. React Nativ

中文文案排版指北

中文文案排版指北 統一中文文案.排版的相關用法,降低團隊成員之間的溝通成本,增強網站氣質. Other languages: English Chinese Traditional Chinese Simplifed 目次 空格 中英文之間需要增加空格 中文與數字之間需要增加空格 數字與單位之間需要增加空格 全形標點與其他字符之間不加空格 -ms-text-autospace to the rescue? 標點符號 不重複使用標點符號 全形和半形 使用全形中文標點 數字使用半形字符 遇到完整的英

Android 内存分析指北

android 内存泄漏分析指北 简单来说内存泄漏就是当对象不再被应用程序使用,但是垃圾回收器却不能移除它们,因为它们正在被引用 java 垃圾回收介绍: Java 虚拟机运行所管理的内存包括以下几个运行时的数据区域 如下图: 程序计数器: 一块比较小的内存区域,可以看作是当前线程所执行的字节码的行号指示器.且每个线程都有一个独立的程序计数器. java 虚拟机栈: 线程私有的,描述的是java 方法执行的内存模型,每个线程执行的时候都会创建一个栈帧用于储存 局部变量.操作数栈.动态链接.方法出

VMware Workstation 安装以及Linux虚拟机安装 指北

最近有挺多小伙伴跟我说起虚拟机这个东西,所以,今天就给大家写一篇虚拟机安装使用指北吧. 虚拟机(英语:virtual machine),在计算机科学中的体系结构里,是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件.(该段说明来自wiki) 我们即将安装的软件 VMware 则是系统虚拟机.可以轻松在一个操作系统上面安装多一个或者多个操作系统,如kali.Ubuntu.centos等Linux,windows系统,甚至Mac系统都可以

[Android Studio] 2019年Android Studio配置指北

Android Studio是我学习Android开发路上的第一块绊脚石,新建一个项目,一行代码没动,直接编译不起来,本文为什么叫指北,因为我太难了 本文讲解在9102年如何在国内网络不通畅的情况下流畅的使用Android Studio 1. 关闭代理 网上能搜索出一堆通过增加国内镜像站的代理来使下载SDK的速度飞快,然而我一个都用不了,建议不要使用代理 2. 改hosts dl.google.com的DNS无法解析,这是导致很多问题的元凶,通过手动在hosts中增加域名和ip的映射来解决这个问