之前写某题单词查找的时候,有用到set,晚上写codeforces#497 div2 D题有用到map

感觉set,map的功能挺类似的,在此小结;

这里就不具体比较相同点和不同点了,免得看起来乱七八糟的,这里分别细说;

set:

#include <set>

set<...>s;(类型可为int,char,string)

功能主要有:

插入元素;s.insert()

查找元素;s.find()

删除元素;s.erase()

取出首尾元素;set<int>::iterator itor ;//这句一定要写!注意!
     itor=s.begin(); itor=s.end();

itor!=s.end(); 可用来判断某个元素是否找到

其中set本身,可定义排序;

set<int, greater<int>> s;

set<int, less<int> > s;

插入,删除支持单个元素,或是一段区间,或是全部;可自定义;

感觉某位大神的博客讲的非常详细,学习了;

map

定义#include <map>

map<.. , ...>f;

其中可为int ,或char,string

因为map类似于hash,所以map中元素和射影是相对应的;

分别举个例子好了:(可参见这里

当你需要存的是整型数组中的数据,

ai ->i;

map<int ,int >b;

简单的写,可以有 b[a[i]]=i;

也就是说,b[]中的下标和它所对应的值都为int;

char也是相同的意思

当你需要存 b['abc']='defg';的时候你就要用 map<char ,char >b;

map使用起来和set相似,同样可以插入元素,查找元素,删除元素

插入可以简单的写为 b[a[i]]=..类似的写法

查找和删除和set相同

还是说一下自己感悟到的map和set的区别好了,map由于更趋近于hash,所以速度会比set要快很多,但是set的功能比map更完整

map,set的模板[STL]的更多相关文章

  1. Error: map 不是模板

    问题: 笔者在自定义的namespace中使用map的时候,出现如题所示的问题. Error: map 不是模板 解决 百思不得其解. 然后Google到一片CSDN博文的类似问题 vector不是模 ...

  2. chap1 C++泛型技术基础--模板 #STL

    0 缘起 有一点编程经验和积累,想系统的学习下STL,以前都是随意做的笔记,现在想着成主题的输出一下. 书的原型是ISBN:9787302421757 <C++泛型STL原理和应用>,是从 ...

  3. 为什么map对象不能使用stl中的sort函数

    STL所提供的各式各样算法中,sort()是最复杂最庞大的一个.这个算法接受两个RandomAccestlerators(随机存取迭代器),然后将区间内的所有元素以渐增方式由小到大重新排列.第二个版本 ...

  4. 模板——STL队列

    C++ STL queue 容器优先队列&&队列 队列 #include<queue> #include<iostream> using namespace s ...

  5. C++STL中map容器的说明和使用技巧(杂谈)

    1.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 2.map的功能 自 ...

  6. STL中关于map和set的四个问题?

    STL map和set的使用虽不复杂,但也有一些不易理解的地方,如: 为何map和set的插入删除效率比用其他序列容器高? 或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构. ...

  7. STL --> map容器

    map容器 一.map简介 map是一类关联式容器.它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响.对于迭代器来说,可以修改实值,而不能修改key. 二.ma ...

  8. C++中的STL中map用法详解

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

  9. STL——map

    看到map这里,都不知道它主要是干嘛的,你有没有这样的疑问. map的主要作用:提供对T类型的数据进行快速和高效的检索 .C++ STL中标准关联容器set, multiset, map, multi ...

随机推荐

  1. 《python源代码分析》笔记 pythonVM一般表达式

    本文senlie原版的.转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.字节码指令 LOAD_CONST:从consts表中读取序号为i的元素并压入到执行时栈中 ...

  2. XMLHttpRequest创建对象

    首先,介绍一下XMLHttpRequest对象,我们都知道Ajax这不是一个简单的技术,但一些技术的融合.XMLHttpRequest这是Ajax中最为核心的技术.假设没有XMLHttpRequest ...

  3. 前端学习笔记(zepto或jquery)——对li标签的相关操作(四)

    对li标签的相关操作——五种方式给奇数项li标签设置样式 demo演示: 1 2 3 4 5 6 7 // 详解: 通常我们为多个li添加样式时常用的是使用filter,但我们在第三节中可以看到fil ...

  4. linux_redhat_线程后台运行方法

    建议看完1:后直接看2 screen 方式熟练些可靠. 次方法适用于redhat系统,unbunt* 系统用screen 命令 产看系统版本 cat /proc/version 首先项目制作的sh文件 ...

  5. Tomcat剖析(五):Tomcat 容器

    Tomcat剖析(五):Tomcat 容器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三):连接器(1 ...

  6. JS怎样将拖拉事件与点击事件分离?

    帖子:http://bbs.csdn.net/topics/390785395?page=1#post-397369340 怎样将拖拉事件跟点击事件分离? 须要做到:拖拉时不触动点击事件 <ht ...

  7. 认识ASP.NET MVC6

    认识ASP.NET MVC6 这篇文章说明下如何在普通编辑器下面开发mvc6应用程序. 上篇文章: 十分钟轻松让你认识ASP.NET 5(MVC6) 首先安装mvc6的nuget包: 可以看到在pro ...

  8. 远程调用之RMI技术

    ---恢复内容开始--- RMI已经不是什么新的技术了,但是相对于webservice来说,rmi比较简单,比较适合一些小的应用,下面的helloword列子可以介绍rmi的相关技术 服务器端代码: ...

  9. Oracle中的二进制、八进制、十进制、十六进制相互转换函数

    原文:Oracle中的二进制.八进制.十进制.十六进制相互转换函数 Oracle中的二进制.八进制.十进制.十六进制相互转换函数   今天在网上看到一篇关于在oracle中对各种进制数进行转换的帖子, ...

  10. ExcelReport源码解析

    ExcelReport第二篇:ExcelReport源码解析   导航 目   录:基于NPOI的报表引擎——ExcelReport 上一篇:使用ExcelReport导出Excel 下一篇:扩展元素 ...