SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签115

  • 分类37

  • 归档320

  • 关于

  • 搜索

STL常用模板:Map字典

发表于 2020-01-08 更新于 2021-10-29 分类于 计算机 , 技术 , C/C++ 阅读次数: Valine:
本文字数: 3k 阅读时长 ≈ 3 分钟

C/C++参考文档

概念

  map是STL的一个关联容器,它提供一对一的hash。

  • 第一个可以称为关键字(key),每个关键字只能在map中出现一次;
  • 第二个可能称为该关键字的值(value);

  map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能。在map内部所有的数据都是有序的,后边我们会见识到有序的好处。比如一个班级中,每个学生的学号跟他的姓名就存在著一对一映射的关系。

头文件

1
#include <map>

名字空间

1
std

构造函数

定义:

1
map<Type,Type>

  第一个Type是键的类型,第二个Type是值的类型。

常用函数

begin

语法:

1
iterator begin();

  begin()函数返回一个迭代器指向map的第一个元素。


clear

语法:

1
void clear();

  clear()函数删除map中的所有元素。


count

语法:

1
size_type count( const KEY_TYPE &key );

  count()函数返回map中键值等于key的元素的个数。


empty

语法:

1
bool empty();

  empty()函数返回真(true)如果map为空,否则返回假(false)。


end

语法:

1
iterator end();

  end()函数返回一个迭代器指向map的尾部。


equal_range

语法:

1
pair equal_range( const KEY_TYPE &key );

  equal_range()函数返回两个迭代器——一个指向第一个键值为key的元素,另一个指向最后一个键值为key的元素。


erase

语法:

1
2
3
void erase( iterator pos );
void erase( iterator start, iterator end );
size_type erase( const KEY_TYPE &key );

  erase()函数删除在pos位置的元素,或者删除在start和end之间的元素,或者删除那些值为key的所有元素。


find

语法:

1
iterator find( const KEY_TYPE &key );

  find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。


get_allocator

语法:

1
allocator_type get_allocator();

  get_allocator()函数返回map的配置器。


insert

语法:

1
2
3
iterator insert( iterator pos, const pair<KEY_TYPE,VALUE_TYPE> &val );
void insert( input_iterator start, input_iterator end );
pair<iterator, bool> insert( const pair<KEY_TYPE,VALUE_TYPE> &val );

  insert()函数:

  • 插入val到pos的后面,然后返回一个指向这个元素的迭代器。
  • 插入start到end的元素到map中。

  只有在val不存在时插入val。返回值是一个指向被插入元素的迭代器和一个描述是否插入的bool值。

  示例:

1
2
3
4
5
6
7
8
9
10
11
12
// 定义一个map对象
map<int, string> mapStudent;

// 第一种 用insert函數插入pair
mapStudent.insert(pair<int, string>(000, "student_zero"));

// 第二种 用insert函数插入value_type数据
mapStudent.insert(map<int, string>::value_type(001, "student_one"));

// 第三种 用"array"方式插入
mapStudent[123] = "student_first";
mapStudent[456] = "student_second";

  以上三种用法,虽然都可以实现数据的插入,但是它们是有区别的,当然了第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的 插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是不能在插入数据的,但是用数组方式就不同了,它可以覆盖以前该关键字对 应的值。


key_comp

语法:

1
key_compare key_comp();

  key_comp()函数返回一个比较key的函数。


lower_bound

语法:

1
iterator lower_bound( const KEY_TYPE &key );

  lower_bound()函数返回一个迭代器,指向map中键值>=key的第一个元素。


max_size

语法:

1
size_type max_size();

  max_size()函数返回map能够保存的最大元素个数。


rbegin

语法:

1
reverse_iterator rbegin();

  rbegin()函数返回一个指向map尾部的逆向迭代器。


rend

语法:

1
reverse_iterator rend();

  rend()函数返回一个指向map头部的逆向迭代器。


size

语法:

1
size_type size();

  size()函数返回map中保存的元素个数。


swap

语法:

1
void swap( map &obj );

  swap()交换obj和现map中的元素。


upper_bound

语法:

1
iterator upper_bound( const KEY_TYPE &key );

  upper_bound()函数返回一个迭代器,指向map中键值>key的第一个元素。


value_comp

语法:

1
value_compare value_comp();

  value_comp()函数返回一个比较元素value的函数。


参考资料
  • C++ map用法总结(整理)
-------- 本文结束 感谢阅读 --------
相关文章
  • STL常用模板:MultiSet多元集合
  • STL常用模板:MultiMap多元字典
  • STL常用模板:Bitset位集合
  • STL常用模板:Double Ended Queue双向队列
  • STL常用模板:List链表
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: STL常用模板:Map字典
  • 本文作者: SiriYang
  • 创建时间: 2020年01月08日 - 15时01分
  • 修改时间: 2021年10月29日 - 18时10分
  • 本文链接: https://blog.siriyang.cn/posts/20200108153950id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
C/C++ 文档 STL
STL常用模板:MultiMap多元字典
STL常用模板:Bitset位集合
  • 文章目录
  • 站点概览
SiriYang

SiriYang

努力搬砖攒钱买镜头的摄影迷
320 日志
33 分类
88 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 作品商铺

  1. 概念
  2. 构造函数
  3. 常用函数
    1. begin
    2. clear
    3. count
    4. empty
    5. end
    6. equal_range
    7. erase
    8. find
    9. get_allocator
    10. insert
    11. key_comp
    12. lower_bound
    13. max_size
    14. rbegin
    15. rend
    16. size
    17. swap
    18. upper_bound
    19. value_comp
蜀ICP备19008337号 © 2019 – 2025 SiriYang | 1.7m | 25:41
0%