首页 > 编程语言 >C++容器---关联式容器<map>&<multimap>

C++容器---关联式容器<map>&<multimap>

时间:2023-08-14 11:35:22浏览次数:47  
标签:返回 容器 map 元素 C++ --- value key 排序


由于multimap和map相差不大,所以基本以map做练习;


集合(map)是一种包含已排序(升序)对象的关联容器。map/multimap会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。集合元素的第一个参数是key,第二个元素当做value,元素的顺序与key有关,与value无关;


模板原型

//Key为元素(键值)类型

template <class Key, class T,class Compare=less<Key>, class Alloc=allocator<pair<const Key,T>>> class map

key:元素的key键;

T:元素的value;



comapre:实现内部排序的仿函数;

allocator:内存配置器,负责内存的分配和销毁;


构造函数:


map <key,Elem> c; //产生一个空的map

map <key,Elem> c(op); //以op为排序准则,产生一个空的map

map <key,Elem> c(begin,end);//以区间(begin,end)内的元素产生一个新的map

map <key,Elem> c(begin,end,op);//以区间(begin,end)内的元素产生一个新的map,元素排序准则为op

map <key,Elem> c1(c) //产生某个map的对象副本


op:排序准则:

1、map<float,string,greater<float> > m1;

2、map<float,string>::allocator_type ma;

ma=m1.get_allocator();

map <float,string> m2(less<float>(),ma);

输出:

map<float,string,greater<int> >::iterator it;

for循环:

Custompair p1 = (pair<float,string>)(*it);

p1.first();p1.second();

格式化输出:fixted、cout.precision(3)等


相关函数:

      begin()          返回指向map头部的迭代器

      end()            返回指向map末尾的迭代器

      rbegin()         返回一个指向map尾部的逆向迭代器
      rend()           返回一个指向map头部的逆向迭代器

      insert()         插入元素
      clear()         删除所有元素

      erase()          删除一个元素

      count()          返回指定元素出现的次数

      find()           查找一个元素

      upper_bound()     返回键值>给定元素的第一个位置

      lower_bound()    返回键值>=给定元素的第一个位置

      empty()          如果map为空则返回true
      equal_range()    返回特殊条目的迭代器对

      get_allocator()  返回map的配置器,指明对象的初始存储地址
      max_size()       返回可以容纳的最大元素个数
      
      size()           返回map中元素的个数
      swap()            交换两个map

      key_comp()       返回比较元素key的函数
      value_comp()      返回比较元素value的函数

--------------------------------


【pair】用法:

-------------------------------

代码练习:











标签:返回,容器,map,元素,C++,---,value,key,排序
From: https://blog.51cto.com/u_12667998/7074301

相关文章

  • 基于微信小程序的校园设备报修平台的设计与实现-计算机毕业设计源码+LW文档
    【摘要】随着互联网技术的发发展,计算机技术广泛应用在人们的生活中,逐渐成为日常工作、生活不可或缺的工具。在高校,各种管理系统层出不穷,为校园设备报修管理开发必要的系统,能够有效的提升管理效率。一直以来,校园设备报修一直没有进行系统化的管理,学生无法快速进行报修,由此提出开发基......
  • 集合-Collections及常用方法
    一.概述Collections类是Java提供的一个操作Set、List、Map等集合的工具类Collections类提供了许多操作集合的静态方法,借助这些静态方法可以实现对集合元素的排序、查找替换和线程安全化等操作Collections类中的方法都是静态的Collections类中没有构造函数,不能进行实例化二.常......
  • 解读 --- 对象的深拷贝
    合集-c#基础(12) 1.编码技巧---如何实现字符串运算表达式的计算07-122.编码技巧---同步锁对象的选定07-133.编码技巧---使用dynamic简化反射07-244.编码技巧---谨防闭包陷阱07-195.并发编程---信号量线程同步07-186.并发编程---为何要线程池化07-187.并发编程......
  • Spring Cloud Alibaba-服务雪崩效应
    一、高并发带来的问题在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务堆积,最终导致服务瘫痪。二、服务......
  • 使用 transmittable-thread-local 组件解决 ThreadLocal 父子线程数据传递问题
    在某个项目中,需要使用mybatis-plus多租户功能以便数据隔离,前端将租户id传到后端,后端通过拦截器将该租户id设置到ThreadLocal以便后续使用,代码大体上如下所示:ThreadLocal<Integer>threadLocal=newInheritableThreadLocal<>();threadLocal.set(1);Java 我在Controlle......
  • KylinosV10银河麒麟高级服务器操作系统V10-安装telnet
    国产银河麒麟系统也是生产环境上经常遇到的(官网简介:银河麒麟高级服务器操作系统V10-国产操作系统、银河麒麟、中标麒麟、开放麒麟、星光麒麟——麒麟软件官方网站(kylinos.cn))这版系统分为服务器版和个人桌面版;其中服务器版命令估计是基于红帽体系;而桌面版命令估计是基于Ubunt......
  • python 学习-函数-匹配替换等操作
    1.re.match匹配re.match(pattern,string)`:从字符串的开头匹配正则表达式,返回一个匹配对象。如果没有找到匹配的子串,返回`None`str='choice:['app1-ui','app2-ui']'#查找str是否以空格开头第一个有效字符是choice的的行,如果是打印okifre.match(r'\s+choice.*',str):......
  • 第9周项目6-穷举法解决几何问题(3)
    问题及代码:/**Copyright(c)2014,烟台大学计算机学院*Allrightsreserved.*文件名称:MADE25.cpp*作者:孙化龙*完成日期:2014年10月27日*版本号:v1.0**问题描述:4人年龄为等差数列,且相加为26,乘积为880,求以他们年龄为等差数列的前20项。*输入描述:无*输出描......
  • 第9周项目6-穷举法解决几何问题(1)
    问题及代码:/**Copyright(c)2014,烟台大学计算机学院*Allrightsreserved.*文件名称:MADE23.cpp*作者:孙化龙*完成日期:2014年10月27日*版本号:v1.0**问题描述:白钱百鸡。*输入描述:*输出描述:购买方案。*/#include<iostream>usingnamespacestd;in......
  • 第9周项目2-Time类中的运算符重载(续)
    问题描述:在Time类中的运算符重载基础上(1)定义对时间对象的自增和自减一目运算符(2)定义Time类中的<<和>>运算符重载,实现时间的输入输出,改造原程序中对运算结果显示方式,使程序读起来更自然。代码:#include<iostream>usingnamespacestd;classCTime{private:shortinthour......