/* map/multimap容器

* map/multimap属于关联式容器,底层结构是用二叉树实现。

* - map中所有元素都是pair;

* - pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值);

* - 所有元素都会根据元素的键值自动排序;

*

* 优点:可以根据key值(键)快速找到value值.

*

* map和multimap的区别:

* - map不允许容器中有重复key值元素;

* - multimap允许容器中有重复key值元素.

*

* map构造:

* - `map m;`,默认构造函数;

* - `map(const map & m);`,拷贝构造函数;

*

* 赋值:

* - `map& operator=(const map &m);`, 重载等号操作符.

*

* 大小和交换:

* - `size();`,返回容器中元素的数目;

* - `empty();`,判断容器是否为空;

* - `swap(map);`,交换两个map容器中的数据;

*

* 插入和删除:

* - `insert(elem);`,在容器中插入元素,多种插入方式:

* map m;

* (1)`m.insert(pair(1, 10));`;

* (2)`m.insert(make_pair(2, 20));`;

* (3)`m.insert(map::value_type(3,30);`;

* (4)`m[4]=40;`

* 在上面四种插入方法中,虽然第4种最简单,但是第4中容易出错,如`m[5];`看起来像是在取value值,

* 但是这个操作其实创建了一个新的key-value对,只不过value是用默认值来进行填充的.

* - `clear();`,清除所有元素;

* - `erase(pos);`,删除pos迭代器所指的元素,返回下一个元素的迭代器;

* - `erase(beg, end);`,删除区间[beg, end)的所有元素,返回下一个元素的迭代器;

* - `erase(key);`,删除容器中值为key的元素.

*

* 查找和统计:

* - `find(key);`,查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();

* - `count(key);`,统计key的元素的个数.

*

* 排序:与set排序基本相同,我们可以利用仿函数来改变插入数据时候的排序规则.

*/

一个栗子:

//

// Created by shexuan on 2021/1/23.

//

#include

#include

#include

using namespace std;

class myCompare{

public:

// 记住这里加const,不然后报错

bool operator()(int v1, int v2) const {

// 降序

return v1>v2;

}

};

int main(){

map m;

m.insert(pair(1,10));

m.insert(pair(2,20));

m.insert(pair(3,30));

m.insert(pair(4,40));

m.insert(pair(5,50));

for (map::iterator it=m.begin();it!=m.end();it++){

cout << "first: " << it->first << " second: " << it->second << endl;

}

}

map multimapc++_黑马C++视频笔记《STL之map/multimap》相关推荐

  1. C++工作笔记-stl中map基础用法(插入,遍历,删除)

    在最近一直在阅读xx项目,看到里面用到了map,读大学期间基本上从来没用到过这种stl(大学就用了Vector和list).下面对map敲如下代码: 运行截图如下: 代码如下: #include &l ...

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

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

  3. map初始化_需要掌握的Go基础之map:文末附面试题一道

    Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现. map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用. map定义 G ...

  4. java map合并_详解Java8合并两个Map中元素的正确姿势

    1. 介绍 本入门教程将介绍Java8中如何合并两个map. 更具体说来,我们将研究不同的合并方案,包括Map含有重复元素的情况. 2. 初始化 我们定义两个map实例 private static ...

  5. 黑马Uni-App视频笔记(上) 基础部分(含视频素材下载地址)

    视频教学:https://www.bilibili.com/video/BV1BJ411W7pX 素材资料(转自B站视频评论区):https://pan.baidu.com/s/1Dkj5iuGRG6 ...

  6. 从零开始_学_数据结构(五)——STL(map、set、list、vector)

    STL容器 前注: STL(标准模板库)是一个C++的软件库,也是C++标准程序库的一部分. 这些容器,应该都是STL里面的一个类. vector封装数组.list封装链表.map和set封装二叉树 ...

  7. 【vue基础】黑马vue视频笔记(二)

    文章目录 一.过滤器(vue2) (1)Filters过滤器概念 (2)定义过滤器 (3)私有过滤器和全局过滤器 (4)其他 (5)过滤器的注意点 二.watch 侦听器 (1)什么是侦听器 (2)侦 ...

  8. map初始化_您可曾这样初始化一个map呢?

    最近作者打球,不小心把手给弄伤了,虽然学到了一点Java冷知识,但最近不能像以往那样,啪啦啪啦写几百个字了,需要悠着点,所以今天来点轻松哒- 我有个怪癖,喜欢看别人写的代码,然后找出不尽如人意的地方, ...

  9. 学习笔记:SpringCloud 微服务技术栈_实用篇②_黑马旅游案例

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...

最新文章

  1. android wifi模拟,模拟WifiManager进行Android单元测试
  2. leetcode算法题--Surrounded Regions
  3. 今天仔细学习了html加载执行的顺序
  4. java 中的访问修饰符
  5. html怎么改艺术字体颜色,html超链接字体颜色怎么改
  6. 快速排序算法 java 实现
  7. 工程师软技能4:找出你的短板
  8. Android学习之——ListView下拉刷新
  9. 一些提高生产力的 Linux 命令和技巧
  10. android checkbox 选中事件_智慧树知到Android移动应用开发基础章节测试答案
  11. 计算机基础应用课件,大学计算机基础应用课件
  12. 矩阵分解:特征值分解、SVD分解、舒尔分解、谱分解
  13. 开发中的多线程ID检测工具(ESET_VC52_MCID)
  14. 你所学的专业是怎么回事——摄影测量与遥感
  15. 在Windows Server 2012中搭建WEB服务器,附ASP配置方法
  16. inkscape裁剪
  17. 【天梯赛练习题(c语言)】
  18. jmeter- 循环控制器计数器 实现批量添加操作
  19. Java开发真的这么赚钱?连做金融的忍不住转行了
  20. 跨界营销新套路:立白和杜蕾斯这样“去污”

热门文章

  1. CSDN企业数字化之路 ——「低代码」发展研讨会北京站现场实录大放送
  2. 以“基”取胜:戴尔科技云平台 释放企业新动能
  3. 关于谷歌云,你应该知道的一切! | 技术头条
  4. Cloud一分钟|茅台4.5亿入股云上贵州大数据,后者已接管苹果中国iCloud; 阿里云进入印度市场,增长速度远超当地平均水平...
  5. 最小覆盖模型matlab_数学规划模型的matlab求解 非线性最小二乘lsqnonlin
  6. python zip压缩_Python zip压缩与解压(zipfile模块实例)
  7. jq ajax异步上传文件,jQuery插件ajaxFileUpload异步上传文件
  8. uni-app集成uview
  9. ETL异构数据源Datax_日期增量同步_13
  10. TortoiseGit 推送本地仓库变动文件至远程仓库_入门试炼_06