map是一类关联式容器,自动建立Key - Value的对应 , key 和 Value可以是任意你需要的类型。下面介绍 map 中一些常用的函数;

一、map 中的 begin 和 end 函数

  map<char , int> m ;

  m['a'] = 100 ;

  m['b'] = 200 ;

  m['c'] = 300 ;

  m.begin() -> first;      // 输出第一个元素的键值

  m.begin() -> second ;    // 输出第一个元素的 value

  m.end() -> first ;    // 输出最后一个元素的下一个元素的键值

  m.end() ->second ;  // 输出最后一个元素的下一个元素的value

二、map 中的 rbegin 和 rend 函数

  和其他数据结构差不多,这个是从后往前输出的,返回的值要用变量来存储,变量应该这样定义:map<char,int>::reverse_iterator iter ;

  map<char , int> m ;

  m['a'] = 100 ;

  m['b'] = 200 ;

  m['c'] = 300 ;

  m.rbegin() -> first ;   // 输出最后一个元素的键值

  m.rend() -> first ;    // 输出第一个前面一个元素的键值

三、map 中的 empty 函数

  map<char , int> m ;

  m.empty() ;  //若 map 中的元素为空时,返回 true ,否则返回 false

四、map 中的 size 函数

  map<char , int> m ;

  m['a'] = 100 ;

  m['b'] = 200 ;

  m['c'] = 300 ;

  m.size() ;    // 返回 map 中的数据元素个数

五、map 中的 at 函数

  at 函数中的参数为键值,输出的是键值相对应的 value ;

  map<char , int> m ;

  m['a'] = 100 ;

  m['b'] = 200 ;

  m['c'] = 300 ;

  m.at('a') ;  //  输出键值 a 对应的 value ,相当于 vector 中的 at 中放入下标

六、map 中的 find 函数

  find 函数用来查找键值,返回键值所在的位置指针;

  map<char , int> m ;

  m['a'] = 100 ;

  m['b'] = 200 ;

  m['c'] = 300 ;

  m.find('b') -> second ;  // 输出键值 b 对应的 value

七、map 中的 insert 函数

  和其他数据结构很相似,insert 函数有两个参数,第一个参数表示在什么地方插入,第二个参数表示插入什么

  map<char , int> m ;

  m['a'] = 100 ;

  m['b'] = 200 ;

  m['c'] = 300 ;

  m.insert(m.begin() , pair<char,int>('a',50) ;    // 在容器之前插入一个元素('a' , 50) ;

  map<char , int> m1 ;

  m1.insert(m.begin() , m.end()) ;    // 将 m 中的数据全部复制给 m1

  m1.insert(m.begin(),m.find('c')) ;    // 将 m 中的数据从第一个开始,一直复制到键值为 c 为止

八、map 中的 erase 函数

  erase 函数 用来删除 map中的某个对象 , 参数为map对象的键值 ;

  map<char , int> m ;

  m['a'] = 100 ;

  m['b'] = 200 ;

  m['c'] = 300 ;

  m.erase('a') ;  //将键值为 a 的这个对象给删除掉

  m.erase(m.find('a')) ;  效果和上面一样

  m.erase(m.find('a') , ++m.find('b')) ;  // 将键值为 a 和 b 的map对象删除

九、map 中的 count 函数

  count 函数 顾名思义,用来统计相同键值出现的次数

  map<char , int> m ;

  m['a'] = 100 ;

  m['b'] = 200 ;

  m['c'] = 300 ;

  m.count('b') ;    // 输出键值 b 出现的次数

  

Map(关联式容器)的更多相关文章

  1. STL源码分析读书笔记--第5章--关联式容器

    1.关联式容器的概念 上一篇文章讲序列式容器,序列式容器的概念与关联式容器相对,不提供按序索引.它分为set和map两大类,这两大类各自有各自的衍生体multiset和multimap,的底层机制都是 ...

  2. 关联式容器(associative containers)

    关联式容器(associative containers) 根据数据在容器中的排列特性,容器可分为序列式(sequence)和关联式(associative)两种. 标准的STL关联式容器分为set( ...

  3. C++ 容器:顺序性容器、关联式容器和容器适配器

    什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器.很简单,容器就是保存其它对象的对象 ...

  4. 7.7 C++基本关联式容器

    参考:http://www.weixueyuan.net/view/6404.html 总结: 基本的关联式容器主要有:set.multiset.map和multimap,这四种容器可以分为两组:ma ...

  5. STL——关联式容器

    一.关联式容器 标准的STL关联式容器分为set(集合)/map(映射表)两大类,以及这两大类的衍生体multiset(多键集合)和 multimap(多键映射表).这些容器的底层机制均以RB-tre ...

  6. STL学习笔记--关联式容器

    关联式容器依据特定的排序准则,自动为其元素排序.缺省情况下以operator<进行比较.set multiset map multimap是一种非线性的树结构,具体的说是采用一种比较高效的特殊平 ...

  7. C++关联式容器的排序准则

    stl中set和map为关联式容器,会根据排序准将元素自动排序.原型如下: template<class _Kty, class _Pr = less<_Kty>, class _A ...

  8. vector是序列式容器而set是关联式容器。set包含0个或多个不重复不排序的元素。

    1.vector是序列式容器而set是关联式容器.set包含0个或多个不重复不排序的元素.也就是说set能够保证它里面所有的元素都是不重复的.另外对set容器进行插入时可以指定插入位置或者不指定插入位 ...

  9. 面试可能遇到的关联式容器(map、set等)相关问题

    >>>. map与set的区别是什么,各有哪些优势?   map中存储的数据是以键值对(key - value)形式并且通过排序(比较key,默认以 '<' 方式排序)存在的( ...

随机推荐

  1. 强烈推荐visual c++ 2012入门经典适合初学者入门

    强烈推荐visual c++ 2012入门经典适合初学者入门 此书循序渐进,用其独特.易于理解的教程风格来介绍各个主题,无论是编程新手,还是经验丰富的编程人员,都很容易理解. 此书的目录基本覆盖了Wi ...

  2. 排序方法之标准库中的快排 qsort ()函数

    C标准库qsort()函数的用法(快排) 使用快速排序例程进行排序 头文件:stdlib.h 用 法: void qsort(void *base, int  nelem, int  width, i ...

  3. 将外部准备好的sqlite导入到项目当中

    首先,将sqlite数据库文件放在Resource文件夹下,并且允许其编译到项目当中. 之后在AppDelegate当中执行一些代码,这里将代码封装了一个Helper: #import "R ...

  4. IBM中枪后,下一个是谁?

    冯强/文 在之前的博文<信息战第二弹:中国对美国咨询公司Say no>我以前提到对美国咨询服务公司在国企开展业务的限制.有可能波及IBM.Microsoft.Google.CISCO.Or ...

  5. gridview合并相同的行

    #region 方法:合并Gridview行    /// <summary>    /// 合并GridView指定行单元格    /// </summary>    /// ...

  6. Android - 不管在应用的哪个activity按Home键整个App就结束了

    最开始,客户反映说在用app的时候,来个电话,接完再点app,不是原来的界面,而是重启了.数据都没了,所以就在activity重写onSaveInstanceState方法,将数据保存起来.后经测试发 ...

  7. 用VIM删除空行

    从网上找了一个 :g/^s*$/d 开始用的挺好,后来遇到一种空格开头的空行,就不好用了. MSDN上说正则匹配空行用/^\s*$/,就试着把上面的命令改为: :g/^\s*$/d 就可以了. 用的操 ...

  8. iOS 模态视图转场的动画效果

    ModalViewController * modalView = [[ModalViewController alloc]init]; modalView.modalTransitionStyle ...

  9. CLLocation

    http://blog.sina.com.cn/s/blog_9e8867eb01013knc.html 这家伙写的不错本人也参考了这篇博客,希望原文博主可以谅解新手的无奈举措 首相要提到的类是 CL ...

  10. IronPython初体验和实战集合等类型转换和类型匹配

    人老了,做什么都累~学到了这么多技术,从最早C到C++再到JAVA再到C#,最终都是为了改善产品,改善系统的可维护性.众所周知C#,C++,C都是强类型语言,什么情况都得定义一些实体类来改变业务模型, ...