有序的都不带unordered,即如下:

set multiset map multimap

其中带multi的表示关键字可以重复

无序的带unordered,如下:

unordered_map

unordered_set

unordered_multimap

unordered_multiset

map系有KEY和VALUE,set系只有KEY没有VALUE

4个有序容器的KEY必须重载<号,不然无法比较,内部实现为红黑树

4个无序容器的KEY必须重载==号和HASH函数,内部实现为哈希表

所有8个关联容器都有迭代器begin()、end()

set系的迭代器不能更改KEY,map的迭代器也不能改KEY,但可以改VALUE

map:

key_type:KEY类型

mapped_type:VALUE类型

values_type:pair类型【pair(key,value)类型】

set:

key_type和value_type类型是一样的,没有mapped_type类型

插入元素:

.insert()
.emplace()
map[x]=y;

删除元素:

.erase(VAL)		删除所有值为VAL的项,返回删除的元素个数
.erase(p) 删除p迭代器 返回p后面一个迭代器
.erase(b,e) 删除迭代器b到e的元素(不含e)返回e

查找元素:

非multi(单关键字):
	.find(VAL)	返回迭代器,找不到返回.end()
.count(VAL) 返回出现次数
multi(多关键字):
	.find(VAL)返回第一个找到的迭代器
有序容器:
.lower_bound(K) 返回第一个KEY不小于K的迭代器
.upper_bound(K) 返回第一个KEY大于K的迭代器
无序容器只能用下面的这个(因为lower,upper显然对无序容器无意义),当然有序容器也能用下面的equal_range。
equal_range(K) 返回一个pair,其中包含两个迭代器,指明等于KEY等于K的范围

STL关联容器总结的更多相关文章

  1. STL关联容器

    这里简单学习一下STL关联容器,主要是map.multimap.set.multiset以及unordered_map.前四个底层实现都是利用红黑树实现的,查找算法时间复杂度为\(O(log(n))\ ...

  2. STL关联容器的基本操作

    关联容器 map,set map map是一种关联式容器包含 键/值 key/value 相当于python中的字典不允许有重复的keymap 无重复,有序 Map是STL的一个关联容器,它提供一对一 ...

  3. STL关联容器值hashtable

    hashtable(散列表)是一种数据结构,在元素的插入,删除,搜索操作上具有常数平均时间复杂度O(1); hashtable名词 散列函数:负责将某一元素映射为索引. 碰撞(collision):不 ...

  4. STL 笔记(二) 关联容器 map、set、multimap 和 multimap

    STL 关联容器简单介绍 关联容器即 key-value 键值对容器,依靠 key 来存储和读取元素. 在 STL 中,有四种关联容器,各自是: map 键值对 key-value 存储,key 不可 ...

  5. STL List容器

    转载http://www.cnblogs.com/fangyukuan/archive/2010/09/21/1832364.html 各个容器有很多的相似性.先学好一个,其它的就好办了.先从基础开始 ...

  6. ###STL学习--关联容器

    点击查看Evernote原文. #@author: gr #@date: 2014-08-23 #@email: forgerui@gmail.com STL中的关联容器. ###stl学习 |--迭 ...

  7. STL的基本使用之关联容器:map和multiMap的基本使用

    STL的基本使用之关联容器:map和multiMap的基本使用 简介 map 和 multimap 内部也都是使用红黑树来实现,他们存储的是键值对,并且会自动将元素的key进行排序.两者不同在于map ...

  8. STL的基本使用之关联容器:set和multiSet的基本使用

    STL的基本使用之关联容器:set和multiSet的基本使用 简介 set 和 multiSet 内部都是使用红黑树来实现,会自动将元素进行排序.两者不同在于set 不允许重复,而multiSet ...

  9. STL之关联容器---set, mutilset, map, mutilmap

    STL的容器分为序列容器和关联容器.它们所表达的数据结构各有不同: 序列容器:vector(变长数组), list(链表), queue(队列), heap(堆算法)等 关联容器:set/mutils ...

随机推荐

  1. AI机器人最高等级

    AI机器人最高等级 题目描述 在小朱朱的游戏世界里,有n个AI机器人. 他们相互之间可以进行PK,胜方存活且升一级,负方直接淘汰. 高等级AI必定战胜低等级AI,同等级AI的PK结果必定一胜一负,且规 ...

  2. java中给集合快速取值最大值和最小值

    public static void main(String[] args) { List list = new ArrayList(); list.add(new Double(123.23)); ...

  3. Tiptop ERP 采购运费一键分摊

    项目背景: 公司的采购运费在逐年上升,之前财务都是做在管理费用中,金额大了后已经严重造成成本失真,所以财务要求it部能帮助分摊运费   1.纸质单据 2.系统入库单apmt720 3.系统请款单apm ...

  4. ASP.NET MVC模块化开发——动态挂载外部项目

    最近在开发一个MVC框架,开发过程中考虑到以后开发依托于框架的项目,为了框架的维护更新升级,代码肯定要和具体的业务工程分割开来,所以需要解决业务工程挂载在框架工程的问题,MVC与传统的ASP.NET不 ...

  5. Python该怎么入门?Python入门教程(非常详细)

    Python要学多久可以学会,达到精通呢? 任何知识都是基础入门比较快,达到通晓的程序是需求时日的,这是一个逐渐激烈的进程. 通晓任何一门编程语言,都需求通过大量的实践来积累经验,解决遇到的各种疑难问 ...

  6. POJ2528Mayor's posters 线段树,离散化技巧

    题意:一个坐标轴从1~1e7,每次覆盖一个区间(li,ri),问最后可见区间有多少个(没有被其他区间挡住的) 线段树,按倒序考虑,贴上的地方记为1,每次看(li,ri)这个区间是否全是1,全是1就说明 ...

  7. Angular项目目录

    0.模块介绍和基础知识 https://cloud.tencent.com/developer/section/1489514 1.如下图VSCode-- node_modules 第三方依赖包存放目 ...

  8. cursor 把鼠标指针的形状弄成一只伸出食指的手

    <span style="cursor:auto">auto</span><br> <span style="cursor:cr ...

  9. CodeForces - 645 C.Enduring Exodus

    快乐二分 用前缀和随便搞一下 #include <cstdio> using namespace std; ; int p[N]; ; inline int msum(int a, int ...

  10. 题解【AcWing177】噩梦

    题面 考虑双向广搜. 我们需要记录男孩和女孩的当前位置,并且每次都进行扩展. 记录一个数组 \(st[i][j]\) . 如果 \(st[i][j]=0\) ,说明 \((i,j)\) 还没有被男孩和 ...