STL中 map 和 multimap

1. 所在头文件<map>. 命名空间std, 声明如下:

 1 namespace std{
 2     template <class Key,class T,
 3               class Compare = less<Key>,
 4               class Allocator = allocator<pair<const Key,T> > >
 5     class map;
 6     template <class Key,class T,
 7               class Compare = less<Key>,
 8               class Allocator = allocator<pair<const Key,T> > >
 9     class multimap;
10 }

  - key/value必须具备 assignable+copyable;  key 必须comparable

  - 元素的次序由key决定, 与value无关.

  - 可以把set/multiset视为特殊的map/multimap. 

  - 也是使用红黑树实现的.

2. map/multimap的构造/析构

1 map c;
2 map c(op);
3 map c1(c2);
4 map c(beg,end);
5 map c(beg,end,op);
6 c.~map();

3. 非变动性操作

1 c.size();
2 c.empty();
3 c.max_size();
4 各类算术运算

4. 查询操作

count(key);
find(key);
lower_bound(key);
upper_bound(key);
equal_range(key)

5. map 和multimap不提供元素直接存取, 因此元素存取通常由迭代器进行 , map提供 []操作符, 可以直接存取.

  - 在map/multimap的定义中可以看到 key是const的,保证了不会被破坏key, 也不会破坏已经排好序的元素. 

  - 如果要移除元素, 只能用它提供的成员函数.

  - find()只能针对key查找, 查找value可以用find_if() 或者直接遍历.

6. 使用value_type避免隐式类型转换

  -  coll.insert(std::map<std::string,float>::value_type("roger","21"));   value_type 是容器本身提供的类型定义. 

7. pair<>

  -  coll.insert(std::pair<std::string,float>("roger",21)); 

8. make_pair()算法函数

  -  coll.insert(std::make_pair("roger",21)); 

转载于:https://www.cnblogs.com/roger9567/p/4889906.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你每隔多久使用计算机上网查找资料英文,牛津英语8B Unit3导学案

43. Each of the students should ___________(treat) equally[平等地] by our teachers.44. ---When _______ the Museum of London ______(build), do you know? ---Sorry, I‘ve no idea.45.This picture ___________ (paint) by Millie yesterday.46. These photos ______…

python源码剖析_Python源码剖析 - 对象初探

01 前言 对象是 python 中最核心的一个概念&#xff0c;在python的世界中&#xff0c;一切都是对象&#xff0c;整数、字符串、甚至类型、整数类型、字符串类型&#xff0c;都是对象。 02 什么是PyObject Python 中凡事皆对象&#xff0c;而其中 PyObject 又是所有对象的基础&a…

html点线面制作,利用HTML5绘制点线面组成的3D图形的示例

玩Canvas玩了有两三个礼拜了&#xff0c;平面的东西玩来玩去也就那样&#xff0c;所以就开始折腾3D了。因为Canvas画布终究还是平面的&#xff0c;所以要有3D就得抽象出一个Z轴。然后再把3D坐标转换成2D坐标&#xff0c;画到画布上&#xff0c;再通过旋转等变换效果来产生3D感。…

javapanel根据内部组件_[译]避免在unmounted组件上调用setState

[译]避免在unmounted组件上调用setState原文 : https://www.robinwieruch.de/react-warning-cant-call-setstate-on-an-unmounted-component很多人在开发 React 的过程中&#xff0c;会遇到下面这些警告。github上很多issue都和这些警告相关。因此&#xff0c;我想在这篇文章里…

如何写一个脚本语言_零基础小白如何学会写文案?文案写作技巧之一:如何写一个吸引读者的文案开头...

我文笔不好怎样才能够写出优质的文案&#xff1f;很多人都有这个疑问&#xff0c;包括我自己在学习新媒体运营之前&#xff0c;这也是我最大的困惑。现在是内容为王的时代&#xff0c;你的文章质量决定了你的KPI。后来我学习了文章的写作结构和技巧后&#xff0c;就能够写出一篇…

Extjs之RowNumberer

Ext.grid.RowNumberer,Ext.grid.PageRowNumberer 在一个数据表格中,一般都会加一个行号,在ExtJs中,要实现行号这一效果,只需要一句代码: new Ext.grid.RowNumberer() 举个例子,代码如下: var colModel new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(),{ header: "…

计算机硬件的维护知识,电脑放了一年开不了机 电脑硬件维护常识要点有哪些...

随着经济的发展&#xff0c;人们走到哪里都是拿着手机&#xff0c;对于家里已有电脑的&#xff0c;完全不会去用下&#xff0c;很多人都觉得手机更加方便&#xff0c;但长时间不用电脑就会导致电脑当中的一些设备出现问题&#xff0c;都知道电脑它主要就会由一些硬件与软件进行…

发那科pmc地址分配_一台全新的FANUC数控机床,请简述有挡块回参功能的实现步骤?包括PMC的I/O分配、具体参数设定、梯形图程序...

展开全部挡块回636f70793231313335323631343130323136353331333433623063参功能的实现步骤由x地址决定的&#xff1a;1、打到回零的选项,动轴回零。2、当挡块被轴台压到的时候就减速了,挡块被压的时候PMC的X地址有一个会变成0。PMC的I/O分配&#xff1a;早期的I/O板用于数控系统…

计算机学院寝室文明风景线活动,小猿关注 | 营造良好学风 打造和谐宿舍 ——计算机学院开展学风主题教育暨文明宿舍评选活动...

原标题&#xff1a;小猿关注 | 营造良好学风 打造和谐宿舍 ——计算机学院开展学风主题教育暨文明宿舍评选活动计算机学院记者团讯(通讯员 苏婉静 编辑 王鸿宇)12月15日晚&#xff0c;计算机学院于九号楼9201教室开展“ 营造良好学风&#xff0c;打造和谐宿舍”主题教育活动&am…

c++ 结构体初始化_STM32入门系列-使用库函数点亮LED,LED初始化函数

要点亮LED&#xff0c;需要完成LED的驱动&#xff0c; 在工程模板上新建一个led.c和led.h文件&#xff0c;将其存放在led文件夹内。这两个文件需要我们自己编写。 通常xxx.c文件用于存放编写的驱动程序&#xff0c;xxx.h文件用于存放xxx.c内的stm32头文件、管脚定义、全局变量声…

swift-UITextfield控件的基本属性设置

//1.初始化UITextField let userNameUITextField(frame: CGRectMake(0, 100, 100, 100)); //2.将文本框userName添加到当前视图中 self.view.addSubview(userName); //3.文本框默认显示文字 userName.placeholder"请输入手机号"; //4.设置字体大小 userName.fontUIFo…

js生日计算年龄_JS根据生日算年龄的方法

本文实例讲述了JS根据生日算年龄的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;function parseDate(str){if(str.match(/^\d{4}[\-\/\s]\d{1,2}[\-\/\s]\d{1,2}$/)){return new Date(str.replace(/[\-\/\s]/i,/));}else if(str.match(/^\d{8}$/)){return new Dat…

美国计算机本科 毕业论文,计算机本科毕业论文-20210323001720.docx-原创力文档

轨蔺碑垸女琴本科毕业论文(设计)(09届本科毕业生)题 目&#xff1a; 网上商城系统的设计与实现学生姓名&#xff1a;学生学号&#xff1a;学院名称&#xff1a;科信软件学院专业名称&#xff1a;软件工程指导教师&#xff1a;二零一三年五月【摘 要】随着Internet技术的发展&am…

vue openlayer单击地图事件循环多次执行_12道vue高频原理面试题,你能答出几道?

前言本文分享 12 道 vue 高频原理面试题,覆盖了 vue 核心实现原理,其实一个框架的实现原理一篇文章是不可能说完的,希望通过这 12 道问题,让读者对自己的 Vue 掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握 Vue ❤️1. Vue 响应式原理vue-reactive核心实现类:Obse…

大型网站架构演化发展历程

前面已经描述了大型网站系统的特点&#xff0c;而对一个大型网站系统&#xff0c;其架构也是重要的一个环节。 大型网站技术主要的挑战来自于庞大的用户、高并发以及海量的数据这三个方面。大型网站的形成就像一颗大树的成长&#xff0c;历尽长时间的磨练&#xff0c;最后枝繁叶…

dts数据库迁移工具_传统数据库迁移上云利器-ADAM

自1970年关系型数据库被提出以来&#xff0c;至今已有50年历史。但在关系型数据库领域正在发生着巨大的变化&#xff0c;首先是互联网的发展&#xff0c;使得开源数据库越来越受欢迎&#xff0c;可扩展性成为支撑业务发展的重要特性&#xff0c;比如WebScaleSQL就是几个互联网公…

计算机网上作业系统论文,网上作业提交系统的设计与实现

随着现代计算机科学的发展&#xff0c;计算机信息系统越来越受到重视&#xff0c;使得基于WEB技术的网络教育平台成为现代教育技术改革与发展的方向。人们的工作方式已经逐渐改变为由计算机来完成&#xff0c;网络为计算机提供了一个新的平台&#xff0c;此套系统是为高校学生提…

python解zuobiaoxi方程_吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程

作者&#xff1a;Peter红色石头的个人网站&#xff1a;红色石头的个人博客-机器学习、深度学习之路​www.redstonewill.com今天带来第二周课程的笔记&#xff1a;梯度下降与正规方程。主要内容&#xff1a;多维特征多变量梯度下降梯度下降法实践正规方程多维特征Multiple Featu…

ubuntu12.04平台下a80编译环境搭建

如果出现unable to locate package &#xff0c;则用sudo apt-get update 安装JDK6 下面开始安装jdk&#xff1a; 在网上查的一些资料上都是把jdk安装在/usr/lib/jvm/jdk下面&#xff0c;也有安装在/opt下的&#xff0c;我在这里介绍的就是把它安装在了/opt下&#xff0c; 终端…

计算机房按几类防雷,计算机机房防雷方案

常见问题计算机机房防雷方案2461一键分享这些微电子网络设备的普遍应用&#xff0c;使得防雷的问题显得越来越重要。由于微电子设备具有高密度、高速度、低电压、和低功耗等特性&#xff0c;这就使其对各种诸如雷电过电压、电力系统操作过电压、静电放电、电磁辐射等电磁干扰非…