如何首先按值排序 std::map,然后按键排序?

2023-12-10

我需要排序一个std::map按值,然后按键。该地图包含如下数据:

  1  realistically
  8         really
  4         reason
  3     reasonable
  1     reasonably
  1     reassemble
  1    reassembled
  2      recognize
 92         record
 48        records
  7           recs

我需要按顺序获取值,但更重要的是,在值按顺序排列后,键需要按字母顺序排列。我怎样才能做到这一点?


std::map将对其元素进行排序keys。它不关心values排序时。

You can use std::vector<std::pair<K,V>> then sort it using std::sort followed by std::stable_sort:

std::vector<std::pair<K,V>> items;

//fill items

//sort by value using std::sort
std::sort(items.begin(), items.end(), value_comparer);

//sort by key using std::stable_sort
std::stable_sort(items.begin(), items.end(), key_comparer);

第一种应该使用std::sort因为它是nlog(n),然后使用std::stable_sort这是n(log(n))^2在最坏的情况下。

请注意,虽然std::sort出于性能原因而选择,std::stable_sort正确排序需要,因为您希望保留按值排序。

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

如何首先按值排序 std::map,然后按键排序? 的相关文章

  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla
  • Directory.Delete 之后 Directory.Exists 有时返回 true ?

    我有非常奇怪的行为 我有 Directory Delete tempFolder true if Directory Exists tempFolder 有时 Directory Exists 返回 true 为什么 可能是资源管理器打开了
  • 如何将非静态类成员“std::bind”绑定到 Win32 回调函数“WNDPROC”?

    我正在尝试将非静态类成员绑定到标准WNDPROC http msdn microsoft com en us library ms633573 aspx功能 我知道我可以通过将类成员设为静态来简单地做到这一点 但是 作为一名 C 11 ST
  • ClickOnce 应用程序错误:部署和应用程序没有匹配的安全区域

    我在 IE 中使用 FireFox 和 Chrome 的 ClickOnce 应用程序时遇到问题 它工作正常 异常的详细信息是 PLATFORM VERSION INFO Windows 6 1 7600 0 Win32NT Common
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 确定一组日期的事件重复模式

    我正在寻找一种模式 算法或库 它将采用一组日期并在退出时返回重复的描述 即集合 11 01 2010 11 08 2010 11 15 2010 11 22 2010 11 29 2010 会产生类似 十一月的每个星期一 的结果 有没有人以
  • 如何检测表单的任何控件的变化?

    如何检测 C 中表单的任何控件的更改 由于我在一个表单上有许多控件 并且如果表单中的任何控件值发生更改 我需要禁用按钮 我正在寻找一些内置函数 事件处理程序 属性 并且不想为此创建自定义函数 不 我不知道任何时候都会触发任何事件any控制表
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • 使用 %d 打印 unsigned long long

    为什么我打印以下内容时得到 1 unsigned long long int largestIntegerInC 18446744073709551615LL printf largestIntegerInC d n largestInte
  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • Spring Boot REST · @Constraint 用于删除?

    我正在开发一个使用 Spring Boot REST HATEOAS Hibernate 和 PostgreSQL 的系统后端 为了验证 我开始使用以下类extend org springframework validation Valid
  • LibGDX 移动旋转相机

    我在使用 LibGDX 构建的应用程序中遇到了一种情况 我需要相机能够旋转 并且可以由用户移动 并且能够缩放 我的相机移动和缩放相机的控件工作得很好 但是 当相机旋转时 相机会根据该旋转移动 例如 如果相机向左旋转 45 度 并且用户向右拖
  • 张量流/keras中输入的自相关

    我有一个一维输入信号 我想计算自相关作为神经网络的一部分 以便在网络内部进一步使用 我需要对输入与输入本身进行卷积 在 keras 自定义层 张量流中执行卷积 我们需要以下参数data shape is batch in height in
  • data.frame 中每组的平均值[重复]

    这个问题在这里已经有答案了 我有一个data frame我需要计算每组的平均值 即每Month 以下 Name Month Rate1 Rate2 Aira 1 12 23 Aira 2 18 73 Aira 3 19 45 Ben 1 5
  • 使用 javascript 以管理员身份运行批处理的简单方法

    我想导出一种简单可靠的方法来自动提升正在运行的批处理 而无需使用其他线程中建议的额外 VBS 文件或提升的快捷方式 通过 javascript 从批处理中调用 UAC 对话框可确保代码简短 当在对话框中选择 是 时 下面的脚本会自动将用户正
  • 多维数组中的多个文件上传

    我有一个 php 表单 行数未知 用户可以在其中上传文件 为此 我使用二维数组
  • 如何使用java读取https页面内容? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何使用java读取https页面内容 以下是检索 页面内容 的示例https maven apache org guides mini guide repository ssl
  • 抛出异常时不会调用移动构造函数

    我有一个累积当前异常的变量 并且需要在引发当前异常时进行清理 以便不会再次报告相同的错误 问题是throw std move ex 不调用移动构造函数 这会清理ex 而是调用复制构造函数 以便ex也保留已经抛出的错误 MVCE 如下 inc
  • Svelte:如何将操作传递给组件?

    有一个类似的问题被问到here但我不认为答案适用于我的用例 我在用着纤薄的材质 UI并试图延长数据表具有拖放行功能的组件 我正在使用简洁的 dnd 操作模块支持拖放行为 以下效果很好 我可以拖放表格的行 table thead thead
  • 卸载视图控制器时,保留/强类成员变量会自动清理吗?

    我有以下财产 h property nonatomic strong NSMutableDictionary cache m synthesize cache cache 的数据 cache建立在 viewDidLoad 之上 现在我想知道
  • 如何在Spring Security中传递参数和注销成功url?

    我在我的 spring boot 应用程序中使用基于 java 的 spring 安全配置 当用户单击注销链接时 用户将被重定向到登录页面 在本例中 我需要在注销成功 url 中传递自定义参数 例如当我注销时 应用程序被重定向到http l
  • 如何从窗口获取文本内容

    我有一个展示一本书的窗口 下面的两个较小的框中 有打开的书的页码和卷信息 我可以轻松获取该信息 如下所示 ControlGetText volume ThunderRT6TextBox3 ControlGetText page Thunde
  • 如何解决致命异常:Thread-11

    现在我正在开发一个 使用异步任务我面临这个错误 任何人都知道这一点 10 03 19 04 55 662 E AndroidRuntime 1547 FATAL EXCEPTION Thread 11 10 03 19 04 55 662
  • 每次部署后回形针文件都会被删除

    我使用 Paperclip gem 来存储图片 并且在本地主机上它工作得很好 但是 我添加到实时应用程序中的任何图片都会在每次部署后被删除 我使用Git来部署 这是我的部署过程 bundle exec cap production depl
  • FirstPrivate 和 LastPrivate 与 OpenMP 中的 Private 子句有何不同?

    我看了官方的定义 但还是很困惑 firstprivate 指定每个线程应该有自己的变量实例 并且应该使用变量的值来初始化该变量 因为它存在于并行构造之前 对我来说 这听起来很像私人的 我寻找了示例 但我似乎不明白它有何特别之处或如何使用它
  • 使用 Qt 线程和信号的缓冲区溢出

    我必须将项目从 QT5 降级到 QT4 并在执行此操作时出现奇怪的缓冲区溢出错误 这是我的代码 我像这样创建一个 QThread thread new QThread reader new Reader reader gt setParam
  • 直接访问空对象 {} 上的属性时出现语法错误[重复]

    这个问题在这里已经有答案了 gt object Number Object prototype toString call 1 1 lt true gt object Number toString call 1 2 lt true gt
  • Bash:选择与模式匹配的上一个命令

    我知道使用向上和向下箭头进行 bash 历史导航 我想要一种懒惰的方法来选择与某些正则表达式匹配的上一个命令 该命令比整个命令短 因此键入所需的时间更少 用bash可以吗 如果没有的话其他shell有这样的功能吗 您可以随时使用CTRL R
  • 此 iPhone 6 运行的是 iOS 11.3.1 (15E302),该版本的 Xcode 可能不支持

    我正在使用 Xcode 9 2 和 Sierra 10 3 3 我的 iPhone 6 版本为 11 3 1 15E302 我无法使用 iPhone 6 来测试 IOS 应用程序 因为 Xcode 说 无法找到设备支持文件 此 iPhone
  • 如何首先按值排序 std::map,然后按键排序?

    我需要排序一个std map按值 然后按键 该地图包含如下数据 1 realistically 8 really 4 reason 3 reasonable 1 reasonably 1 reassemble 1 reassembled 2