从现在开始,想写一个关于STL工具的各种tip类的东西,记录下那些细节,以免以后使用STL工具时出错。

  1.关于map,如果需要第一个键值需要放进一个结构体,那么结构体是需要写好其自定义的排序规则的,这一点不妨和set作比较,因为它们的实现方法都是树,为了维持其内部树的结构来实现高效的使用,必须定义好自己的排序规则(尽管可能我把一个结构体放在map中第一个位置我并不需要它排序)。那么把结构体放在map的第二个位置需要定义好结构体的排序规则么?答案是不需要。不过写个排序规则也并不是难事,能写好就直接写好呗。(要说明的是,我上面的表述可能并不准确,map是以Key-Value这样的结构储存的,所以我上面所讲的第一个位置指的是键值Key,第二个位置指的是值Value。)

  2.对于第一点,还有一个拓展的地方,要把结构体丢进set或者map等容器里面,必须把排序规则写好之外,还必须把这个规则写完整,不然会出错。举个例子,一个边的结构体,有两个元素u和v,如果我们只是定义了这样的规则:

  return u<temp.u;

那么如果u相同就会被认为是相同的两个边变量。因此我们必须写完整,如下:

  return u == temp.u ? v<temp.v : u<temp.u;

尽管可能这个比较规则对我们来说并不重要,我们只是需要set的判重而已=。=

STL漫谈的更多相关文章

  1. 漫谈可视化Prefuse(二)---一分钟学会Prefuse

    前篇<漫谈可视化Prefuse(一)---从SQL Server数据库读取数据>主要介绍了prefuse如何连接数据库sql server并读取数据进行可视化展现. 回头想想还是应该好好捋 ...

  2. 【道德经】漫谈实体、对象、DTO及AutoMapper的使用

    写在前面 实体和值对象 实体和对象 故常无欲以观其妙,常有欲以观其徼 初始实体和演化实体 代码中的DTO AutoMapper实体转换 后记 实体(Entity).对象(Object).DTO(Dat ...

  3. CSS实现水平|垂直居中漫谈

    利用CSS进行元素的水平居中,比较简单,手到擒来:行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可.而撸起垂直居中, ...

  4. 详细解说 STL 排序(Sort)

    0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算 ...

  5. STL标准模板库(简介)

    标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...

  6. STL的std::find和std::find_if

    std::find是用来查找容器元素算法,但是它只能查找容器元素为基本数据类型,如果想要查找类类型,应该使用find_if. 小例子: #include "stdafx.h" #i ...

  7. STL: unordered_map 自定义键值使用

    使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...

  8. C++ STL简述

    前言 最近要找工作,免不得要有一番笔试,今年好像突然就都流行在线笔试了,真是搞的我一塌糊涂.有的公司呢,不支持Python,Java我也不会,C有些数据结构又有些复杂,所以是时候把STL再看一遍了-不 ...

  9. 【转】漫谈iOS程序的证书和签名机制

    转自:漫谈iOS程序的证书和签名机制 接触iOS开发半年,曾经也被这个主题坑的摸不着头脑,也在淘宝上买过企业证书签名这些服务,有大神都做了一个全自动的发布打包(不过此大神现在不卖企业证书了),甚是羡慕 ...

随机推荐

  1. MyEclipse的Server标签出现:Could not create the view: An unexpected exception was thrown

    删除工作空间下的.metadata\.plugins\org.eclipse.core.runtime\.settings\com.genuitec.eclipse.ast.deploy.core.p ...

  2. winfrom_关于打印小票

    1.使用的是PrintDocument控件,在工具箱  ,将其托到窗体上: 2. private void btnprint_Click(object sender, EventArgs e) { p ...

  3. 安川机器人Yaskawa

    安川机器人自动回原点 1. 判断机器人是否在安全位置  (立方体干涉区) 2. 读取机器人当前位置  GETS PX000 $PX001 读取基座标下的机器人当前位置并放到位置型变量P000中  $P ...

  4. 14 Django之Form和Model Form组件

    一.什么是Form 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用 ...

  5. 如何提高后台服务应用问题的排查效率?日志 VS 远程调试

    转眼间,距离Jerry最近一篇文章推送已经过去了一个多月的时间了. 公众号更新的频率降低,不是因为Jerry偷懒,而是由于从春节过后,我所在的SAP成都研究院数字创新空间整个团队,一直在忙一个5月份需 ...

  6. WaitType:ASYNC

    项目组有一个数据库备份的Job运行异常,该Job将备份数据存储到remote server上,平时5个小时就能完成的备份操作,现在运行19个小时还没有完成,backup命令的Wait type是 AS ...

  7. python 只导出项目依赖包

    平时导出依赖一般都是 pip freeze >  requirements.txt   这种方式导出的是当前python环境中所有的包,只会多不会少,有些库不是必需的也跟着导出来,冗余过重. 这 ...

  8. MySQL8.0.17下载与安装

    下载环境:Windows 10 下载地址: https://dev.mysql.com/downloads/mysql/ 1.解压压缩包,修改解压目录. 2.在E:\mysql-8.0.17-winx ...

  9. Form组件 cookie和session

    django form组件 1.渲染标签 2.校验数据 3.展示信息 第一步需要一个form类 from django import forms class MyForm(forms.Form): n ...

  10. 牛客练习赛53 D 德育分博弈政治课 (思维建图,最大流)

    牛客练习赛53 D德育分博弈政治课 链接:https://ac.nowcoder.com/acm/contest/1114/D来源:牛客网 题目描述 德育分学长最近玩起了骰子.他玩的骰子不同,他的骰子 ...