C++ map
来源:互联网 发布:淘宝客返利分销源码 编辑:程序博客网 时间:2024/06/06 03:34
1。目录
map简介
map的功能
map的定义
在map中添加元素
查找并获取map中的元素
从map中删除元素
map对象的迭代遍历
2。map简介
map是一类关联式容器,它是模板类。关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置类获取。它的特点是增加和删除节点对迭代器的影响很小,除了操作节点,对其他的节点都没有什么影响。对于迭代器来说,不可以修改键值,只能修改其对应的实值。
3。map的功能
自动建立Key - value的对应。key 和 value可以是任意你需要的类型,但是需要注意的是对于key的类型,唯一的约束就是必须支持<操作符。
根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。
快速插入Key - Value 记录。
快速删除记录
根据Key 修改value记录。
遍历所有记录。
4。map的定义
使用map得包含map类所在的头文件:#include
map对象是模板类,需要关键字和存储对象两个模板参数,基本的定义模式如下:
std:map
map<string, int> word_count; // 定义了一个空的map对象word_count; word_count["Anna"] = 1;
程序说明: 1.在word_count中查找键为Anna的元素,没有找到. 2.将一个新的键-值对插入到word_count中,他的键是const string类型的对象,保存Anna。而他的值则采用直初始化,这就意味着在本例中指为0. 3.将这个新的键-值对插入到word_count中 4.读取新插入的元素,并将她的值赋为1. 使用下标访问map与使用下标访问数组或者vector的行为是截然不同的:使用下标访问不存在的元素将导致在map容器中添加一个新的元素,他的键即为该下标值。
使用map::insert方法添加元素
map容器提供的insert操作:
1. map.insert(e) : e是一个用在map中的value_type类型的值。如果键不存在,则插入一个值为e.second的新元素;如果键在map中已经存在,那么不进行任何操作。该函数返回一个pair类型,该pair类型的first元素为当前插入e的map迭代器,pair的second类型是一个bool类型,表示是否插入了该元素。 2. map.insert(beg, end) : beg和end是迭代器,返回void类型 3. map.insert(iter, e) : e是value_type类型的值,如果e.first不在map中,则创建新元素,并以迭代器iter为起点搜索新元素存储的位置,返回一个迭代器,指向map中具有给定键的元素。 For example:
word_count.insert(map<sting, int>::value_type("Anna", 1)); word_count.insert(make_pair("Anna", 1));
返回值:如果该键已在容器中,则其关联的值保持不变,返回的bool值为true。
6。查找并获取map中的元素
使用下标获取元素存在一个很危险的副作用:如果该键不在map容器中,那么下标操作会插入一个具有该键的新元素。
因此引入map对象的查询操作:
map.count(k) : 返回map中键k的出现次数(对于map而言,由于一个key对应一个value,因此返回只有0和1,因此可以用此函数判断k是否在map中)
map.find(k) : 返回map中指向键k的迭代器,如果不存在键k,则返回超出末端迭代器。
For example:
int occurs = 0;if( word_count.cout("foobar") ) occurs = word_count["foobar"];int occurs = 0;map<string, int>::iterator it = word_count.find("foobar");if( it != word_count.end() ) occurs = it ->second;
7。从map中删除元素
移除某个map中某个条目用erase()
该成员方法的定义如下:
iterator erase(iterator it); //通过一个条目对象删除
iterator erase(iterator first, iterator last); //删除一个范围
size_type erase(const Key& key); //通过关键字删除
8. map对象的迭代遍历
与其他容器一样,map同样提供begin和end运算,以生成用于遍历整个容器的迭代器。
- c++map
- c++MAP
- map(c++)
- c++map
- C++map
- 【c/c++】map
- c++&&map函数
- c++map的用法
- c++map容器介绍
- c++map的用法
- C++MAP关联容器
- [c++]stl map
- c++ map
- C++map容器类
- codeforce 12C map
- c++,vector,map
- C++map用法
- C++STL:map概述
- 高德地图-根据经纬度获取地址(逆地理编码)
- CentOS更新Python版本,同时修复yum不能使用的问题
- DES加密算法原理
- php中的composer是用来干什么的?
- struts运行原理
- C++ map
- sql where 1=1和 0=1 的作用
- 利用volley进行http设置请求头(三)
- JQuery开发详解(五)
- monkey测试
- 27. Remove Element
- query.setFirstResult(),query.setMaxResults(); query.scroll();的用法
- RESET MASTER 和RESET SLAVE 命令的使用方法 注意事项
- Ubuntu下安装Koala