/******************************************************************map的基本操作函数:C++ Maps是一种关联式容器,包含“关键字/值”对begin()          返回指向map头部的迭代器clear()         删除所有元素count()          返回指定元素出现的次数empty()          如果map为空则返回trueend()            返回指向map末尾的迭代器equal_range()    返回特殊条目的迭代器对erase()          删除一个元素find()           查找一个元素get_allocator()  返回map的配置器insert()         插入元素key_comp()       返回比较元素key的函数lower_bound()    返回键值>=给定元素的第一个位置max_size()       返回可以容纳的最大元素个数rbegin()         返回一个指向map尾部的逆向迭代器rend()           返回一个指向map头部的逆向迭代器size()           返回map中元素的个数swap()            交换两个mapupper_bound()     返回键值>给定元素的第一个位置value_comp()      返回比较元素value的函数
====================================================================
1、map构造map<int, string> mapStudent;2、map添加数据mapStudent.insert(pair<int, string>(1, "student_one"));mapStudent.insert(map<int, string>::value_type(2, "student_two"));mapStudent[3] = "student_three";********************************************************************/
#pragma warning (disable:4786)
#include <map>
#include <string>
#include <iostream>using namespace std;int main()
{map<int, string> mapStudent;cout<<"三种插入方式:"<<endl;mapStudent.insert(pair<int, string>(1, "student_one"));mapStudent.insert(map<int, string>::value_type(2, "student_two"));mapStudent[3] = "student_three";mapStudent.insert(map<int, string>::value_type(4, "student_four"));   pair<map<int,string>::iterator,bool> InsertPair;   //判断是否插入成功InsertPair = mapStudent.insert(map<int,string>::value_type(5,"student_five"));if(InsertPair.second == true){//cout<<InsertPair.first.operator++<<endl;  //求解??不知道怎么应用第一个数据}cout<<"三种遍历方式:"<<endl;map<int, string>::iterator  iter;for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++){cout<<iter->first<<" "<<iter->second<<endl;}map<int, string>::reverse_iterator  iters;for(iters = mapStudent.rbegin(); iters != mapStudent.rend(); iters++){cout<<iters->first<<" "<<iters->second<<endl;}  //逆序输出cout<<"数组的输出形式:"<<endl;for(int iIndex=0;iIndex < mapStudent.size();iIndex++) //size()返回成员的个数{cout<<mapStudent[iIndex]<<endl;}cout<<mapStudent.count(1)<<endl;  //count()判断关键字是否存在,返回1表示存在,0iter = mapStudent.find(1);        //find()关键字存在时,返回数据所在位置的迭代器,否则返回end()返回的迭代器if( iter != mapStudent.end() ){cout<<"数据存在:"<<iter->first<<" "<<iter->second<<endl;mapStudent.erase(iter);        //用迭代删除数据}else{cout<<"数据不存在!"<<endl;}int n = mapStudent.erase(3);        //用关键字删除,如果删除了会返回1,否则返回0iter = mapStudent.lower_bound(2);   //返回2的迭代器cout<<iter->second<<endl;iter = mapStudent.upper_bound(2);  //返回3的迭代器cout<<iter->second<<endl;   /*Equal_range函数返回一个pair,pair里面第一个变量是Lower_bound返回的迭代器,pair里面第二个迭代器是Upper_bound返回的迭代器,如果这两个迭代器相等的话,则说明map中不出现这个关键字*/pair<map<int,string>::iterator,map<int,string>::iterator> MapPair;MapPair = mapStudent.equal_range(2);if( MapPair.first == MapPair.second ){cout<<"Do not find"<<endl;}else{cout<<"Find"<<endl;}//删除一个前闭后开的集合,这是STL的特性mapStudent.earse(mapStudent.begin(), mapStudent.end());
}

C/C++语言函数学习(3)STL中map容器相关推荐

  1. c语言的erase函数,[转] C++ STL中map.erase(it++)用法原理解析

    总结一下map::erase的正确用法. 首先看一下在循环中使用vector::erase时我习惯的用法: for(vector::iterator it = vecInt.begin(); it ! ...

  2. Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换

    Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片.相互转换 目录 numpy中的array格式数据切片与pandas中的dataframe ...

  3. 18函数对象19command模式20函数对象在STL中的应用

    Item 18. Function Objects Item 19. Commands and Hollywood Item 20. STL Function Objects 1.unction Ob ...

  4. stl中map函数_map :: empty()函数以及C ++ STL中的Example

    stl中map函数 C ++ STL映射:: empty() (C++ STL map::empty()) It is built-in function in C++ STL and used to ...

  5. stl中map函数_map :: max_size()函数,以及C ++ STL中的Example

    stl中map函数 C ++ STL映射:: max_size() (C++ STL map::max_size() ) It returns the maximum number of elemen ...

  6. STL中基本容器有: string、vector、list、deque、set、map

    为什么80%的码农都做不了架构师?>>>    在STL中基本容器有: string.vector.list.deque.set.map set 和map都是无序的保存元素,只能通过 ...

  7. stl中各种容器的自定义比较函数

    class elem { public:elem();elem(int aa):a(aa){} public:int a;int getA(){return a;} };class elem1 { p ...

  8. c++ map是有序还是无序的_C++ STL中Map的按Key排序和按Value排序

    map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择. 我们这样定义 ...

  9. STL 中map的用法详解

    STL 中map的用法详解 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可 ...

最新文章

  1. 20175213 2018-2019-2 《Java程序设计》第4周学习总结
  2. 聚类算法_案例实战:聚类实战
  3. leetcode719:直线上的第k近点对
  4. Mysql 批量更改数据表和字段的字符集(Mysql UTF-8字符集更改为utf8mb4字符集)
  5. 启用RHEL5.6的VNC,使Windows可图形远程控制
  6. Android 5.1 Gallery2 模块编译不过解决办法
  7. (六)、Redis的AOF持久化---Redis设计与实现读书笔记
  8. 【机器视觉锁付整体解决方案】视觉纠偏和找孔示教操作
  9. 字节跳动视频面试经历
  10. 策划好一场活动的要点和方法有哪些?
  11. 将带逗号的字符串转换为数组
  12. Quartus II使用说明(Verilog HDL二选一数据选择器 )
  13. UE4 奇怪灯光阴影
  14. 计算机毕设(附源码)JAVA-SSM老年公寓管理系统
  15. vue本地存储案例_本地化还是创意适应? 流氓游戏街的案例研究
  16. 积极推进计算机管理台账,建台账促规范管理提升党建工作水平
  17. 树脂吸附六价铬废水处理
  18. sinc函数卷积_单位冲击函数卷积.ppt
  19. SSL证书的工作原理是怎么样的?
  20. 阿里巴巴中国总裁叶朋 B2B从1 0向2 0的升级 阅读整理

热门文章

  1. 现代软件工程 学生阅读和调查作业
  2. 顶级程序员的心得–Coders at Work
  3. 敏捷软件开发 12 原则
  4. c语言case接收字符,switch-case-break:字符释义 | 新思维:C语言程序设计
  5. 八年级计算机教学论文,初二数学教学论文范文
  6. python自然语言分析 何翠仪_如何用 Python 中的 NLTK 对中文进行分析和处理?
  7. android xml通知栏权限配置,Android开发中 AndroidManifest.xml配置之service,receiver标签配置详解...
  8. 【学习笔记】MOOC 数学文化赏析 笔记【补档】
  9. html文字转语音代码,【JavaScript】实现文本转语音功能
  10. 计算机二级考试模拟表单答题,2016年计算机二级考试《VFP》模拟简答试题