STL之multimap 【多重映射】

这里写目录标题

  • STL之multimap 【多重映射】
      • 头文件
      • 创建 `std::multimap`
      • 插入元素
      • 遍历 `std::multimap`
      • 删除元素
      • 查找元素
      • 场景应用
      • 综合示例

STL之multimap 【多重映射】

multimap:多重映射,允许存储多个相同键的键-值对,并按键升序排序。

头文件

#include <map>

创建 std::multimap

multimap<std::string, int> students;  // 创建一个从学生姓名到分数的映射 multimap

插入元素

students.insert(make_pair("Alice", 95));
students.insert(make_pair("Bob", 88));
students.insert(make_pair("Alice", 92));  // 可以插入重复键
students.insert(make_pair("Charlie", 75));

遍历 std::multimap

for (const auto& student : students) {std::cout << student.first << ": " << student.second << std::endl;
}

删除元素

students.erase("Alice");

查找元素

你可以使用 find 函数来查找特定键的元素:

auto it = students.find("Bob");
if (it != students.end()) {std::cout << "Found: " << it->first << ": " << it->second << std::endl;
} else {std::cout << "Not Found" << std::endl;
}

场景应用

  • 关系数据库查询
    在数据库中,一个表中的某个字段可能有多个重复的值,如果需要将这些数据以关联的形式存储在内存中,multimap 是很好的选择。
  • 事件日志
    当记录一组事件时,每个事件都有一个时间戳作为键,如果有多个事件在同一时刻发生,可以使用 multimap 存储这些事件。
  • 课程和学生的关系
    一个学生可以选修多个课程,而一个课程也可以被多个学生选修。用 multimap 可以方便地表示这种多对多的关系。
  • 网络路由信息
    在计算机网络中,路由表可以用 multimap 来表示,其中键是目标 IP 地址或子网,值是到达该地址或子网的下一跳路由器。
  • 文件索引
    如果一个文件名可能有多个版本,或者一个关键词可能出现在多个文档中,可以使用 multimap 建立索引。
  • 用户权限管理
    用户可能有多个角色和权限,用 multimap 可以方便地存储这些信息。
  • Web 应用程序
    在 Web 应用中,如论坛、博客等,用户可以订阅多个标签或话题,可以使用 multimap 将用户与他们关注的话题关联起来。
  • 社交网络
    用户可能有多个好友,而一个好友也可能有多个好友,这种情况下可以使用 multimap 表示用户之间的朋友关系。
  • 购物车系统
    在电子商务应用中,一个商品可能有多个优惠券或折扣,可以用 multimap 存储这些优惠信息。

综合示例

以下是一个综合示例,展示了如何使用 std::multimap 存储学生姓名和分数,并遍历它:

#include <iostream>
#include <map>int main() {std::multimap<std::string, int> students;students.insert(std::make_pair("Alice", 95));students.insert(std::make_pair("Bob", 88));students.insert(std::make_pair("Alice", 92));students.insert(std::make_pair("Charlie", 75);for (const auto& student : students) {std::cout << student.first << ": " << student.second << std::endl;}auto it = students.find("Bob");if (it != students.end()) {std::cout << "Found: " << it->first << ": " << it->second << std::endl;} else {std::cout << "Not Found" << std::endl;}students.erase("Alice");for (const auto& student : students) {std::cout << student.first << ": " << student.second << std::endl;}return 0;
}

那么multimap的用法就讲到这里,关注我,为大家持续分享更多的内容,让学习变得更简单,与君共勉,共同成长。

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

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

相关文章

取代房子,中国又一种资本在崛起(深度)

我一直有一个观点&#xff1a;经济形势好的时候&#xff0c;只要不是夕阳行业&#xff0c;做什么都能过得不错。经济形势差的时候&#xff0c;对于个人来说&#xff0c;拼的就是学习能力。 10年前&#xff0c;在市场上很吃香的是MBA&#xff0c;那时候企业需要高速发展&#x…

如何利用chatgpt提高工作效率?

使用 ChatGPT 提高工作效率的关键在于有效利用其能力来辅助和优化你的工作流程。以下是一些具体的建议&#xff1a; 1. 自动化和优化常规任务 生成和编辑文本&#xff1a;利用 ChatGPT 快速撰写或编辑报告、电子邮件、提案等。代码辅助&#xff1a;获取编程语言的帮助&#x…

JVM工作原理与实战(二十):直接内存

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、直接内存 1.直接内存作用 二、在直接内存上创建数据 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字节码&#xff0c;管理内存&#xff0c;确保安全&…

Spring Cloud详细入门使用

文章目录 Spring Cloud服务注册与发现EurekaServer 启动服务注册服务发现 NacosServer启动 (nacos2.2.0)服务注册服务发现服务集群命名空间配置中心集群搭建 负载均衡RPC远程过程调用Feign使用 网关路由断言工厂网关过滤工厂跨域处理全局跨域配置单个微服务跨域配置 限流 熔断 …

Codeforces Round 919 (Div. 2) A~E

A. Satisfying Constraints(模拟) 题意&#xff1a; 给出 n n n个限制条件&#xff0c;问有多少个数字 k k k同时满足这些限制条件。 限制条件分为以下三种&#xff1a; k k k必须大于等于给出的一些数字 x x x k k k必须小于等于给出的一些数字 x x x k k k不能与给出的…

Netty和传统NIO之间的比较

Netty回显服务器实现&#xff1a; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.SimpleChannelInboundHandle…

十个Java字符串操作示例程序

1. 如何在String中获取不同的字符及其计数&#xff1f; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors;public class DistinctCharsCount {public static void main(String[] args) {printDistinctCharsWithCo…

定时器开发基础

1定时器的基本概述 通过滴漏和漏沙瓶这两个例子简单讲述定时器的基本工作原理。 STM32的常见的定时器资源&#xff1a; 系统嘀嗒定时器SysTick、看门狗定时器WatchDog、实时时钟RTC、基本定时器、通用定时器、高级定时器。 系统嘀嗒定时器SysTick &#xff1a;这是一个集成在C…

中移(苏州)软件技术有限公司面试问题与解答(2)—— Linux内核内存初始化的完整流程1

接前一篇文章&#xff1a;中移&#xff08;苏州&#xff09;软件技术有限公司面试问题与解答&#xff08;1&#xff09;—— 可信计算国密标准 本文参考以下文章&#xff1a; 启动期间的内存管理之初始化过程概述----Linux内存管理(九) Linux初始化 特此致谢&#xff01; 本…

JavaScript 自定义分页组件

仿boostrap 前端分页组件的实现 一 写一个前端自定义分页组件&#xff0c;需要考虑以下问题 需要一个<ul id"pagination"></ul>标签 total; // 总数据的数量 pageSize; // 一页显示数量 pageIndex; // 当前页 二 实现细节 编写html文件 index.html…

Debezium日常分享系列之:Debezium and TimescaleDB

Debezium日常分享系列之&#xff1a;Debezium and TimescaleDB 一、TimescaleDB二、完整案例三、Hypertables四、Continuous aggregates五、Compression六、结论 一、TimescaleDB TimescaleDB 是一个开源数据库&#xff0c;旨在使 SQL 对于时间序列数据具有可扩展性。它是作为…

代码随想录算法训练营第二十四天| 77. 组合

77. 组合 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 解题思路&#xff1a;纵向遍历&#xff0c;遇到叶子节点返回上一节点 java&#xff1a; class Solution {List<List<Integer>> result new ArrayList&l…

ACL配置

ACL&#xff1a;访问控制列表 在路由器流量进或出接口上&#xff0c;匹配流量产生动作-- 允许 拒绝 &#xff08;访问限制&#xff09;定义感兴趣流量--- 匹配流量后&#xff0c;将流量提交给其他的协议进行策略 匹配规则&#xff1a; 至上而下逐一匹配&#xff0c;上条匹配…

蓝桥杯(C++ 整数删除 优先队列 )

优先队列&#xff1a; 优先队列具有队列的所有特性&#xff0c;包括队列的基本操作&#xff0c;只是在这基础上添加了内部的一个排序&#xff0c;它本质是一个堆实现的。 1.头文件&定义 #include <queue> #include <functional> //greater<>// 定义 p…

1d 卷积网络笔记

目录 这个是1d 卷积网络合集&#xff1a; resnet1d的 这个是1d 卷积网络合集&#xff1a; https://github.com/StChenHaoGitHub/1D-deeplearning-model-pytorch/blob/main/ResNet50.py resnet1d的 https://github.com/hsd1503/resnet1d

2023 年顶级前端工具

谁不喜欢一个好的前端工具&#xff1f;在本综述中&#xff0c;您将找到去年流行的有用的前端工具&#xff0c;它们将帮助您加快开发工作流程。让我们深入了解一下&#xff01; 在过去的 12 个月里&#xff0c;我在我的时事通讯 Web Tools Weekly 中分享了数百种工具。我为前端…

经典数据库练习题及答案

数据表介绍 --1.学生表 Student(SId,Sname,Sage,Ssex) --SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course(CId,Cname,TId) --CId 课程编号,Cname 课程名称,TId 教师编号 --3.教师表 Teacher(TId,Tname) --TId 教师编号,Tname 教师姓名 --4.成绩…

JavaScript DOM可以做什么?

1、通过id获取标签元素 DOM是文档对象模型&#xff0c;它提供了一些属性和方法来方便我们操作document对象&#xff0c;比如getElementById()方法可以通过某个标签元素的id来获取这个标签元素 // 用法 window.document.getElementById(id); // 例子 <!DOCTYPE html> &l…

深度学习模型之yolov8实例分割模型TesorRT部署-python版本

1 模型转换 从github上下载官方yolov8版本&#xff0c;当前使用的版本是2023年9月份更新的版本&#xff0c;作者一直在更新。官网地址 2 加载模型 模型的训练和测试在官方文档上&#xff0c;有详细的说明&#xff0c;yolov8中文文档这里不做过多说明&#xff0c;v8现在训练是…