C++标准库容器:Map

本文深入解析C++标准库容器Map的特性和应用,包括Map的关键码唯一性、成员函数、迭代器使用、下标运算符的功能及代价,以及比较规则。通过实例说明如何使用find函数进行映射操作。

C++标准库容器:Map


#本博客主要简述了c++标准库容器Map的一些特性

  1. Map 的定义及特性

一个Map就是一个(关键码,值)对偶的序列,它提供基于关键码的快速提取操作。每个关键码至多保持一个值,换句话说,map中的关键码具有唯一性。

简单来说,map提供了一个映射关系来查找元素。

  1. Map的部分成员
    成员定义备注
    Key关键码
    T关键码对应的元素
    value_type关键码和元素的类型以pair的格式储存,即<type of key, type of T>
    iterator双向迭代器
  2. Map的部分成员函数
成员函数类型成员函数功能备注
元素访问at访问指定元素,越界检查
/[]可以“访问指定元素”,也可以“插入指定元素”
迭代器begin/end返回指向容器第一个/尾端的迭代器
/rbegin/rend返回指向容器前端/最后元素的迭代器
容量empty检查容器是否为空
/size返回容纳元素数
修改器clear清除内容
/insert插入元素或节点
/emplace原位构造元素
/erase擦除元素
/swap交换内容
查找count返回匹配特定键的元素数
/find寻找带有特定键的元素
/equal_range返回匹配特定键的元素范围
  • 关于map的迭代器
    map中的每一个迭代器都是以pair<const key , const mapped type>为元素的序列上的迭代器。

    使用map的迭代器遍历时,依据map关键码的递增顺序给出元素。

    对于任何pair,都可以用first, second 索引第一个和第二个元素。

for( map<string, number>:: const_iterator p=Map.begin() ; p!=Map.end() ; ++p)
	cout<<p->first<<'\t'<<p->second;
  • 关于map的下标
    下标运算符将关键码作为下标执行查找,如果不存在这个关键码,就初始化这个关键码。
    map的下标(关键码)必须能够找到,代价就是巨大的空间开销。每次查找map中的元素,时间复杂的是O(log(size_of_map)), 是和关键码的选择有关的。

  • 关于map的比较
    map的关键码必须可以比较,并且迭代器时以递增方式遍历迭代器。按默认规定,关键码的比较采用<(小于)。

  • 映射操作
    通过关键码获取信息:find函数
    Map.find(k)产生指向关键码k的元素的迭代器,如果不存在该元素,则返回Map.end()

if(Map.find(k)!=Map.end)
cout<<Map.find(k)->second;//如果存在以k为关键码的元素,就输出元素的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值