有序的都不带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. 题解 AT1812 【テレビ】

    题目大意 高桥君有一个宽\(w\),高\(h\)的电视机. 判定\(w:h\)是\(4:3\)还是\(16:9\). 分析 我们可以理解成把一个比\(w:h\)化为最简整数比,也就是将\(w:h\)化 ...

  2. jQuery---下拉菜单案例

    下拉菜单案例 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...

  3. Hadoop学习之路(4)Intelij+Maven搭建Hadoop项目

    1创建工程 点击project--Maven--next 2通过maven导入项目依赖jar包 (1)设置maven自动导入依赖jar包 勾选 Import Maven projects automa ...

  4. git内容补充-Git零基础快速入门-苏玲

    https://git-scm.com/book/zh/v2 git历史 集中式版本控制管理:cvs.svn 分布式版本控制管理:git 基本命令 git config --list --global ...

  5. Mac下怎么更新nodejs

    Windows下更新nodejs最简单粗暴的应该就是去官网下载安装包安装了,昨天项目中需要更新nodejs我便找了一下相关文章,发现有一个 n 模块可以管理node,n 是Node的一个模块,所以安装 ...

  6. 《深入理解java虚拟机》读书笔记七——第八章

    第八章 虚拟机字节码执行引擎 1.运行时栈帧结构 概述: 栈帧是用于支持虚拟机进行方法调用的和方法执行的数据结构,他是虚拟机运行时数据区中的虚拟机栈的栈元素,栈帧存储了方法的局部变量,操作数栈,动态连 ...

  7. vlan划分、本征vlan配置、中继

    命令部分: vlan划分(全局模式) vlan name v10 no shu no shu switchport access vlan vlan name v20 inter vlan no sh ...

  8. SQLserver中存储图片

    两种方式1.存放图片路径2.转换成2进制流(不过这样的话将很占用数据库空间)存路径的方式就很简单了,下面着重给出转换成2进制流的存入以及读取方法.存入:string FilePath="&q ...

  9. idea 添加 开发者信息

    #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end #parse( ...

  10. IDEA工具java开发之 运行与调试

    一.运行项目 ◆右键运行 ◆菜单运行 ◆run窗口运行 ◆启动参数 作用:经常用在本地开发环境要去连测试的数据库的时候使用.正常的情况下是连开发环境的数据库的,但是有些情况是需要连测试数据库的.所以这 ...