在 C++ 中检索 std::map 的随机关键元素

2024-03-29

如何在 C++ 中获取 std::map 的随机密钥?使用迭代器? 我不想维护额外的数据结构


std::map迭代器是双向的,这意味着选择一个随机密钥将是O(n)。在不使用其他数据结构的情况下,基本上你唯一的选择就是使用std::advance随机增量begin()。例如:

std::map<K, V> m;
auto it = m.begin();
std::advance(it, rand() % m.size());
K random_key = it->first;

(或者换掉rand()与(例如)std::mt19939如果您有权访问<random>).

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

在 C++ 中检索 std::map 的随机关键元素 的相关文章

随机推荐

  • 自定义 Seaborn 调色板的颜色不一致[重复]

    这个问题在这里已经有答案了 我正在尝试使用自定义调色板来应用不同的值hue类别在seaborn 但输出颜色与我的输入不匹配 举个例子 import random random seed 1 import matplotlib pyplot
  • 如果将无效值 static_cast 到枚举类会发生什么?

    考虑这个 C 代码 enum class Color char red 0x1 yellow 0x2 char data ReadFile Color color static cast
  • 创建测验表单 symfony

    我正在尝试在 symfony 中进行测验 但我在渲染方面遇到了困难 这是我的数据库 一个序列 测验 可以有许多问题 这些问题有多个答案 用户可以选择一个答案 但它的构建方式 我不知道如何创建一个简单的表单 因此当用户选择答案时 它会更新该用
  • 使用 fread、data.table 包读取链 (+, -) 列

    我正在尝试使用 fread 将基因组比对读入data table在 R 中 这是对齐文件的快照 USI EAS28 1 100 1786 674 0 1 1 maternal 68326824 CTCAATTATACTGAAAGAAACAC
  • 如何使用 Python/Tkinter 制作菜单栏剪切/复制/粘贴

    我想制作可以剪切 复制 粘贴所选文本的菜单项 在菜单栏中 而不是在右键单击弹出窗口中 等效的键盘命令已经可以工作 而无需我做任何事情来启用它们 例如 我可以在输入框中输入文本 使用 Control X 剪切它 然后使用 Control C
  • 方法executeScript(selenium web driver)无法定义全局变量以供以后使用?

    我正在使用该方法executeScript在 selenium web 驱动程序中 我发现一个问题 js executeScript var b 1 js executeScript alert b 运行上面的代码后 我想得到一个警报窗口
  • 从 JSON 中的不同嵌套级别提取对象名称

    我一直在尝试从之前的问题中找到解决方案来运行here https stackoverflow com questions 18830955 get the elements from nested json with python usin
  • Android Gradle 构建中出现意外的节点 Android 打包

    我正在尝试让我的项目使用gradle 问题是 每次我尝试构建时 都会收到以下错误 Error Internal error java lang AssertionError Unexpected node Android Packaging
  • 有了websockets,AJAX还有用武之地吗?

    我目前正在使用 Node js 构建一个实时应用程序 我使用 socket io 来支持实时交互 但已加载 jQuery 因此我可以使用 AJAX 我最初使用 socket io 进行服务器和客户端之间的所有通信 我开始认为 AJAX 可能
  • 如何更改 Azure AD 上的用户主体名称

    我正在尝试使用在 Microsoft 文档中找到的 PowerShell 命令 Set MsolUserPrincipalName 更改 Azure AD 用户的用户主体名称here https learn microsoft com en
  • 如何编写将行号输出为列的查询?

    如何编写将行号输出为列的查询 这是 iSeries 上的 DB2 SQL 例如 如果我有 表披头士乐队 John Paul George Ringo 我想写一个声明 如果可能的话 不写过程或视图 这给了我 1 John 2 Paul 3 G
  • 如何从代码隐藏在新窗口或选项卡中打开页面

    所以我有一个 Web 应用程序 我可以从下拉列表中选择一个值 当选择此值时 我想在新窗口中加载另一个页面 我试过这个 ScriptManager RegisterStartupScript Page typeof Page OpenWind
  • 当我访问数组的元素时,硬件级别会发生什么?

    int arr 69 1 12 10 20 113 当我这样做时会发生什么 int x a 3 我一直有这样的印象a 3 意思是这样的 从内存地址开始arr 向前走 3 个内存地址 获取该内存地址表示的整数 但后来我对哈希表的工作原理感到困
  • 从视图模型将焦点设置在 WPF 中的 TextBox 上

    我有一个TextBox and a Button在我看来 现在 我正在检查按钮单击时的条件 如果条件结果为假 则向用户显示消息 然后我必须将光标设置到TextBox控制 if companyref null var cs new Lippe
  • 如何使用 Spring Boot 加载外部配置?

    我目前正在学习如何使用 Spring Boot 到目前为止我从未使用过像Spring这样的框架 而是直接使用文件 FileInputStream等 情况如下 我有一些动态配置值 例如 OAuth 令牌 我想在我的应用程序中使用它们 但我不知
  • Android 中如何使用 MVP 模式控制 ListView

    我目前正在使用 MVP 模式开发 Android 应用程序 当我尝试开发 Activity 时 我应该使用 ListView 所以我对 ListView 使用适配器 但我听说 Adapter 与 MVP 模式上的 Presenter 类似
  • 我们可以用jquery调用智能手机原生的分享功能吗?

    我们可以使用手机 android Iphone 本机共享功能来共享应用程序中的不同内容 是否也可以在所有智能手机中使用 JavaScript 通过浏览器调用此共享功能 这样 在浏览器中的某些事件中 我们可以加载共享小部件 Thanks 是的
  • 使用 shell 删除最旧的文件

    我有一个文件夹 var backup 其中 cronjob 保存数据库 文件系统的备份 它包含一个latest gz zip和许多旧的转储 它们的名称是timestamp gz zip 该文件夹变得越来越大 我想创建一个执行以下操作的 ba
  • Imagecreatefromjpeg 调整大小后返回黑色图像

    我有一个脚本来调整上传图像的大小 但是当我使用它时 它只返回一个黑色方块 所有的错误信息都指向这个函数 function resizeImage image width height scale newImageWidth ceil wid
  • 在 C++ 中检索 std::map 的随机关键元素

    如何在 C 中获取 std map 的随机密钥 使用迭代器 我不想维护额外的数据结构 std map迭代器是双向的 这意味着选择一个随机密钥将是O n 在不使用其他数据结构的情况下 基本上你唯一的选择就是使用std advance随机增量b