零碎的砖瓦| 青训营笔记

49 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天,今天看的网课中,有一些概念我比较陌生,于是在网上查了一查,希望能对同样有疑惑的同学起到帮助作用。

map是一种映射,是常用的STL容器,map的键和值是唯一的。

1.定义:

map<typename1, typename2>mp

使用map要确定映射前类型(键key)和映射后的类型(值value)。

 2.map容器内元素的访问:

(1)通过下标访问。

(2)通过迭代器访问。

3.map基本功能:

  • 1: 添加功能
  • V put(K key,V value):添加元素。
  • 如果键是第一次存储,就直接存储元素,返回null;
  • 如果键不是第一次存储,就用值把以前的值替换掉,返回以前的值。
  • 2: 删除功能
  • void clear():移除所有的键值对元素。
  • V remove(Object key):根据键删除键值对元素,并把值返回。
  • 3: 判断功能
  • boolean containsKey(Object key):判断集合是否包含指定的键
  • boolean containsValue(Object value):判断集合是否包含指定的值
  • boolean isEmpty():判断集合是否为空
  • 4: 获取功能
  • Set keySet():获取集合中所有键的集合
  • V get(Object key):根据键获取值
  • Set<Map.Entry<K,V>> entrySet():获取所有键值对对象的集合
  • Collection values():获取集合中所有值的集合
  • 5: 长度功能
  • int size():返回集合中的键值对的总数

4.map的遍历 Map集合是键值对形式存储值的,所以它的遍历也就是获取键和值,map的遍历有四种:

  1. 通过map.keySet()获取值
  2. 通过Map.entrySet使用iterator遍历key和value
  3. 用for循环通过 Map.entrySet使用iterator遍历key和value
  4. 通过Map.values()遍历所有的value,但不能遍历key

5.使用map

使用map得包含map类所在的头文件

#include <map>  //注意,STL头文件没有扩展名.h

map对象是模板类,需要关键字和存储对象两个模板参数:

std:map<**int**, string> personnel;

这样就定义了一个用int作为索引,并拥有相关联的指向string的指针.

为了使用方便,可以对模板类进行一下类型定义,

**typedef** map<**int**,CString> UDT_MAP_INT_CSTRING;

UDT_MAP_INT_CSTRING enumMap;