C++多索引映射实现

2023-11-30

我正在 C++11 中实现多索引映射,我希望针对特定功能对其进行优化。我目前正在尝试解决的问题是不要多次存储关键元素。但让我解释一下。

问题源于对直方图进行排序以将它们叠加在不同的组合中。直方图有名称,可以分为标记(属性)。

以下是我希望我的属性图具有的功能:

  1. 能够以任意顺序循环属性;
  2. 能够返回每个属性具有唯一值的容器;
  3. 按属性值到达的顺序累积属性值,但能够在填充地图后使用自定义比较运算符对属性进行排序;

我有一个工作实施在 C++11 中使用std::unordered_map with std::tuple as key_type。当属性值到达前向列表元组时,我正在累积它们。预期用途是迭代列表以组成键。

我想介绍的优化是仅将属性的值存储在列表中,而不将它们存储在用作映射中的键的元组中。我希望保持让函数返回对属性值列表的 const 引用的能力,而不是某些包装器的列表。

我知道提升::多索引具有类似的功能,但我不需要键到达时进行排序的开销。我希望按顺序存储新的属性值,并且只能在事后进行排序。我也看过提升::蝇量级,但在最简单的方法中,列表将是flyweight<T>代替T,我不想这样做。 (如果这是最好的解决方案,我绝对可以接受。)

我知道列表是稳定的,即一旦创建了一个元素,它的指针和迭代器仍然有效,即使在调用之后也是如此list::sort()。知道了这一点,可以对映射做一些事情来消除元组元素的冗余副本吗?自定义地图分配器可以在这里提供帮助吗?

感谢您的建议。


让你的映射从迭代器元组到你的 prop 容器。

编写一个散列,取消引用迭代器并组合结果。

将前向列表属性容器替换为首先按哈希排序,然后是内容的集合。

首先在集合中查找,然后在哈希中查找。

如果您需要不同的 props 顺序,请使用另一个集合迭代器容器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++多索引映射实现 的相关文章

  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • 如何使用MemoryCache代替Timer来触发一个方法?

    以下方法通过等待已运行操作的结果来处理并发请求 对数据的请求可能会使用相同 不同的凭据同时出现 对于每组唯一的凭据 最多可以有一个GetCurrentInternal呼叫正在进行中 当准备就绪时 该呼叫的结果将返回给所有排队的服务员 pri
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 私有模板函数

    我有一堂课 C h class C private template
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • 如何检索 SQL Server RAISERROR(或 PRINT)消息?

    我正在尝试使用 PyODBC 从 python 中的 SQL Server Raiserror 获取警告消息 严重性故意设置得很低 因为它充当打印功能 但不必等到查询完成后再进行打印 我期望的输出会是这样的 Test Message col
  • SQL Server - 对值来自另一个表的列进行 CHECK 约束

    如何在列上设置 CHECK 约束 使其可接受的值范围来自另一个表 而无需硬编码 这是一个简化的示例 OneManyTable RoleID TaskID 10 Val1 10 Val2 20 Val1 20 Val2 MetaDataTab
  • javascript等待php完成功能并刷新页面

    我有以下案例 我有下拉菜单 可以从其中选择网站的货币并使用 onchange 事件触发 javascript 函数 Changecurrency 通过使用jquery的changecurrency 函数 我触发php文件 以便根据下拉选择的
  • Spark 迭代/递归算法 - 打破 Spark 沿袭

    我有一个递归 Spark 算法 它将 10 天的滑动窗口应用于数据集 原始数据集是从按日期分区的 Hive 表加载的 在每次迭代中 一组复杂的操作将应用于包含十天窗口的数据集 然后 最后一个日期被插入到原始 Hive 表中 下一个日期从 H
  • Python 老化时间,第 2 部分:时区 [重复]

    这个问题在这里已经有答案了 继我之前的问题之后 Python 老化时间 我现在遇到了一个关于时区的问题 事实证明它并不总是 0200 因此 当 strptime 尝试这样解析它时 它会抛出异常 我想过用 6 或其他什么方法去掉 0200 但
  • 为什么标记不出现?

    我拥有的 一个 RecyclerView 其中包含餐厅 酒吧等的图像 单击这些图像时会将您带到地图 我想要的 当点击它们时 您会看到一张带有标记的地图 其中标记有您周围的所述地点 我的问题 我在另一个应用程序中执行此操作 但另一个应用程序直
  • ILogger 未注入 Durable Functions v2.0

    目前我正在尝试添加一个ILogger or ILogger lt gt 到 Azure Durable Function 以便在活动函数中使用日志记录 登录编排函数工作正常 并被注入到方法本身中 但尝试构造函数注入ILogger总是导致空异
  • 强制 L1 缓存上的一些数据

    对这个简单的问题表示歉意 仍在与这里的一些内存概念作斗争 问题是 假设我有一个预先计算好的数组 A 我想重复访问它 有没有办法告诉 C 程序让这个数组尽可能靠近 CPU 缓存以获得最快的访问速度 谢谢 在大多数架构上 无法强制阵列使用 L1
  • 红袜混音和延迟

    我正在使用 SOX 混合音频 命令SOX m voice wav audio wav final wav是我正在使用的 我的目标是延迟 10 秒的 voice wav 如果我尝试使用延迟 10 0 那么我会得到双语音 怎样才能做对呢 htt
  • Android Studio 虚拟设备卡在 G 屏幕上

    被困在这个问题上太久了 在Android Studio上启动了一个新项目基本活动应用程序 制作了一个虚拟设备 但每当我启动它时 它都会转到一个 黑屏 然后我擦除了内存 现在它卡在带有 google G 徽标的屏幕上 下面有一个小加载栏 多斯
  • 制作更薄的 UITabBar

    我希望能够通过删除每个项目的标题并回收它们占用的垂直空间来缩小 UITabBar 的高度 就像 Tweetie 2 那样 这似乎无法在 xib 中或以编程方式设置 我是否必须子类化 UITabBar 并推出自己的 自己滚 我确信 Tweet
  • 短路逻辑求值运算符

    是否有短路逻辑运算符 特别是短路AND和短路OR 我可以用在WHEREMySQL 5 5 中的子句 如果没有 有什么替代方案 我的问题的抽象观点以及为什么我需要这个的解释可以在这个小提琴中找到 http sqlfiddle com 2 97
  • 如何在CSS中仅设置部分文本的样式[重复]

    这个问题在这里已经有答案了 我需要在下拉列表选项中添加上标 我尝试了很多方法但没有任何效果 因此 帮助我了解如何仅设置选项文本的一部分的样式 使其看起来像上标 如果您知道在下拉列表选项中添加上标的任何其他方法 请帮助我 谢谢 在 HTML
  • 为什么相同的输入返回两个不同的 MD5 哈希值?

    好吧 我有两个文件 它们是完全相同的 第一个文件是 http iadsonline com servconfig php 第二个文件是 http xzerox info servconfig php 但是 当我使用 md5 file 获取他
  • 创建时CYPHER存储相同标签的节点关系顺序

    我有多个源自一个节点的关系 这些关系中的每一个都具有相同的标签 这些关系指向一个子节点 不一定是唯一的 在获取通过此关系标签链接到父级的所有子节点后 我通过名为 trueindex 的关系属性对它们进行排序 然后 我有一个节点数组 我的客户
  • 预处理器中的 C# 宏定义

    C 是否能够像 C 编程语言中使用预处理器语句那样定义宏 我想简化某些重复语句的常规输入 如下所示 Console WriteLine foo 不 C 不支持像 C 那样的预处理器宏 另一方面 Visual Studio 有snippets
  • 片段中的 AdMob

    我正在我的应用程序中插入 AdMob 但我有一个问题 当我在 Eclipse 中插入一些相关代码时 我可以在fragment 03中看到一条关于 构造函数 AdRequest 不可见 的错误消息 以及 错误 解析 XML 时出错 未绑定前缀
  • 获取上周六的日期和下周五的日期

    我想根据今天的日期获取上周六的日期 所以如果我们是周二 那么想要的日期将是 3 天前 另外 如果今天是星期六 那么这将被算作上一个星期六 例如 today Tuesday 09 July 2019 previous saturday gt
  • 内联成员函数和普通成员函数有什么区别?

    内联成员函数 函数体内联 和其他普通成员函数 函数体在单独的 cpp文件中 有什么区别吗 例如 class A void member and Header file hpp class B void member Implementati
  • C++多索引映射实现

    我正在 C 11 中实现多索引映射 我希望针对特定功能对其进行优化 我目前正在尝试解决的问题是不要多次存储关键元素 但让我解释一下 问题源于对直方图进行排序以将它们叠加在不同的组合中 直方图有名称 可以分为标记 属性 以下是我希望我的属性图