C++容器之多重映射(std::multimap)

目录

  • 1 概述
  • 2 使用实例
  • 3 接口使用
    • 3.1 construct
    • 3.2 assigns
    • 3.3 iterators
    • 3.4 capacity
    • 3.5 insert
    • 3.6 erase
    • 3.7 swap
    • 3.8 clear
    • 3.9 emplace
    • 3.10 emplace_hint
    • 3.11 key_comp
    • 3.12 value_comp
    • 3.13 find/count
    • 3.14 lower_bound/upper_bound/equal_range
    • 3.15 get_allocator

1 概述

  多重映射是关联容器,用于存储由键值和映射值的组合形成的元素,遵循特定顺序,并且其中多个元素可以具有等效键。
  在多重映射中,键值通常用于对元素进行排序和唯一标识,而映射的值存储与该键关联的内容。键和映射值的类型可能不同,并在成员类型value_type中分组在一起,该类型是将两者组合在一起的对类型:
  typedef pair<const Key,T> value_type;
 &emsp在内部,多重映射中的元素总是按照其键进行排序,遵循由其内部比较对象(类型为Compare)指示的特定严格弱排序标准。
  multimap容器通常比unordered_multimap容器通过关键字访问单个元素的速度慢,但它们允许根据子集的顺序直接迭代
  多重映射通常被实现为二叉搜索树
其类图如下:
类图

2 使用实例

void MultiMapSuite::find()
{
   
   std::multimap<char, int> a = {
    {
   'e', 45 }, {
    'e', 50 },  {
    'a', 10 }, {
    'b', 20 }, {
    'c', 30 }, {
    'd', 40 } };
   auto it =  a.find('e');
   TEST_ASSERT_EQUALS('e', it->first)
   TEST_ASSERT_EQUALS(45, it->second)
   it =  a.find('h');
   TEST_ASSERT_EQUALS(true, it == a.end())
}

void MultiMapSuite::count()
{
   
   std::multimap<char, int> a = {
    {
   'e', 50 },  {
    'e', 55 }, {
    'a', 10 }, {
    'b', 20 }, {
    'c', 30 }, {
    'd', 40 } };
   TEST_ASSERT_EQUALS(2, a.count('e'))
   TEST_ASSERT_EQUALS(0, a.count('h'))
}

3 接口使用

3.1 construct

namespace helper_of_multimap {
   
bool function_compare(char l, char r) {
    return l < r; }
struct object_compare
{
   
    bool operator()(const char& l, const char& r) {
    return l < r; }
};
}

void MultiMapSuite::construct()
{
   
    std::multimap<char, int> a;
    std::multimap<char, int> b = {
    {
    'a', 10 }, {
    'b', 20 }, {
    'c', 30 }, {
    'd', 40 }, {
   'e', 50}};
    std::multimap<char, int> c(b.begin(), b.end());
    std::multimap<char, int> d(b);
    std::multimap<char, int> e({
    {
    'a', 10 }, {
    'b', 20 }, {
    'c', 30 }, {
    'd', 40 }, {
   'e', 50 }, {
    'a', 10 } });
    std::multimap<char, int, helper_of_multimap::object_compare> f;
    std::multimap<char, int, bool(*)(char, char)> g(helper_of_multimap::function_compare);

    TEST_ASSERT_EQUALS(true, a.empty())
    TEST_ASSERT_EQUALS(5, b.size())
    TEST_ASSERT_EQUALS(5, c.size())
    TEST_ASSERT_EQUALS(5, d.size())
    TEST_ASSERT_EQUALS(6, e.size())
    TEST_ASSERT_EQUALS(true, f.empty())
    TEST_ASSERT_EQUALS(true, g.empty())
}

说明:

  • 构造时可以指定函数对象作为比较函数
  • 构造时可以指定函数指针作为比较函数

3.2 assigns

void MultiMapSuite::assigns()
{
   
    std::multimap<char, int> a = {
    {
    'a', 10 }, {
    'b', 20 }, {
    'c', 30 }, {
    'd', 40 }, {
   'e', 50 }, {
    'e', 60 } };
    std::multimap<char, int

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小白跟做江科大32单片机之新建工程

项目基础配置 1.新建item文件夹&#xff0c;包含全部stm32项目文件 2.在item文件夹中新建第一个项目&#xff0c;2-1 stm32工程模板&#xff0c;起名字是project 3.工程芯片选择STM32F10318&#xff0c;因为课程中的芯片是STM32F10318C8T6 4.在固件库\STM32F10x_StdPeriph_…

【Docker实操】启动redis服务

一、步骤 1、获取redis镜像 执行获取redis镜像命令&#xff1a;docker pull redis。打印镜像清单&#xff0c;可以看到新拉到的redis镜像。 2、创建redis.conf配置文件 linux主机 mkdir -p /root/www/redis/conf touch /root/www/redis/conf/redis.conf cat << EOF &…

ICML2024高分论文!大模型计算效率暴涨至200%,来自中国AI公司

前段时间&#xff0c;KAN突然爆火&#xff0c;成为可以替代MLP的一种全新神经网络架构&#xff0c;200个参数顶30万参数&#xff1b;而且&#xff0c;GPT-4o的生成速度也是惊艳了一众大模型爱好者。 大家开始意识到—— 大模型的计算效率很重要&#xff0c;提升大模型的token…

深入解析文华量化交易策略---交易指令如何选择

随着金融投资的迅猛发展&#xff0c;自动化策略模型已逐渐成为现代投资领域的一股重要力量。量化交易模型均以数据为驱动&#xff0c;通过运用数学模型和算法&#xff0c;对期货、黄金等投资市场走势进行精准预测和高效交易。 艾云策略整理了量化策略相关资料&#xff0c;希望通…

孢子捕捉分析仪的工作原理

TH-BZ1孢子捕捉分析仪是一种专门用于捕捉和分析空气中飘浮的病原菌孢子的设备。它利用现代传感技术、图像识别技术和网络通信技术&#xff0c;通过设置在田间的设备&#xff0c;连续不断地抽吸周围空气&#xff0c;吸附空气中漂浮的病原菌孢子到特制的载玻带上。然后&#xff0…

【AJAX前端框架】Asynchronous Javascript And Xml

1 传统请求及缺点 传统的请求都有哪些&#xff1f; 直接在浏览器地址栏上输入URL。点击超链接提交form表单使用JS代码发送请求 window.open(url)document.location.href urlwindow.location.href url… 传统请求存在的问题 页面全部刷新导致了用户的体验较差。传统的请求导…

【Linux安全】Firewalld防火墙

目录 一.Firewalld概述 二.Firewalld和iptables的关系 1.firewalld和iptables的联系 2.firewalld和iptables的区别 三.Firewalld区域 1.概念 2.九个区域 3.区域介绍 4.Firewalld数据处理流程 四.Firewalld-cmd命令行操作 1.查看 2.增加 3.删除 4.修改 五.Firewa…

hbase版本从1.2升级到2.1 spark读取hive数据写入hbase 批量写入类不存在问题

在hbase1.2版本中&#xff0c;pom.xml中引入hbase-server1.2…0和hbase-client1.2.0就已经可以有如下图的类。但是在hbase2.1.0版本中增加这两个不行。hbase-server2.1.0中没有mapred包&#xff0c;同时mapreduce下就2个类。版本已经不支持。 <dependency><groupId>…

GBase 8s 如何查看回滚的事务 和对应的SQL

描述&#xff1a; 如何查看当前数据库中是否有事务在回滚&#xff0c; 如果有&#xff0c; 具体是哪条 SQL 在回滚&#xff1f; 解决办法&#xff1a; 方法1&#xff1a; 通过 onstat -u|grep RP&#xff1b; 可以获取相关的 sessionid。 通过 onstat -g ses sid 获取 SQL&a…

Spring系列-01-IOC的依赖查找和依赖注入

IOC基础 IOC发展 初始场景, 不使用IOC如何实现 假定现在有一下需求, 开始使用的数据源是MySQL, 后续数据源变动为Oracle, 那么我们的代码就需要改动 每次切数据源都需要改动, 那么进行优化 静态工厂解决强依赖 在01版本基础上, 使用静态工厂对多个数据源进行了封装, 要哪…

HTML静态网页成品作业(HTML+CSS)——魅族商城首页网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…

登录安全分析报告:创蓝云智注册

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

基于C#Winform+DevExpress项目开发实战之一

1&#xff0c;基于C#WinformDevExpress项目开发实战之一

第N4周:中文文本分类——Pytorch实现

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 数据集&#xff1a;train 一.加载数据 import torch import torch.nn as nn import torchvision from torchvision import transforms,d…

电脑连接爱快iKuai软路由之后,网卡没有正常获取到IP,无法访问爱快路由管理页?

前言 上一次咱们说到在爱快控制台上设置/辨认lan口&#xff0c;设置完成之后&#xff0c;其他的一些设置就需要在爱快iKuai软路由的管理页面上设置。 有些小伙伴会发现&#xff0c;当电脑连接上爱快软路由的lan口之后&#xff0c;电脑并没有正常获取到ip&#xff0c;导致无法访…

DNS域名解析的分离解析

一.DNS介绍 DNS域名解析是一种将域名转换为IP地址的服务&#xff0c;在互联网上访问网站时&#xff0c;输入的通常是网站的域名&#xff0c;而计算机在通信时则使用IP地址。因此&#xff0c;DNS域名解析就是将用户输入的域名解析为对应的IP地址&#xff0c;以便计算机能够找到并…

Spark-广播变量详解

Spark概述 Spark-RDD概述 1.为什么会需要广播变量&#xff1f; 广播变量是为了在分布式计算环境中有效地向集群中的所有节点广播大型只读数据集而设计的。 在分布式环境中&#xff0c;通常会遇到需要在所有节点上使用相同的数据集的情况&#xff0c;但是将这些数据集复制到每个…

留学培训行业PaaS应用系统架构的设计与实践

随着留学需求的增长和教育培训市场的不断扩大&#xff0c;留学培训行业正面临着越来越多的挑战和机遇。在这个背景下&#xff0c;利用PaaS&#xff08;Platform as a Service&#xff09;平台来构建留学培训行业的应用系统架构&#xff0c;将成为提升服务质量和效率的重要手段。…

【热门话题】一文带你读懂公司是如何知道张三在脉脉上发了“一句话”的

按理说呢&#xff0c;A公司和脉脉属于不同的平台&#xff0c;而且脉脉上大家可以匿名发言&#xff0c;所以&#xff0c;即便我坐在你边上&#xff0c;我发了一句话上去&#xff0c;你也不知道是谁发的。但通过一些技术&#xff0c;我们却可以分析出&#xff0c;公司是如何知道张…

路由聚合和VRRP技术

实验拓扑图&#xff1a; 实验需求 1、内网IP地址使用172.16.0.0/16 2、SW1和SW2之间互为备份&#xff1b; 3、VRRP/stp/vlan/eth-trunk均使用&#xff1b; 4、所有pc均通过DHCP获取IP地址&#xff1b; 5、ISP只配置IP地址&#xff1b; 6、所有电脑可以正常访问ISP路由器环…