重写对集合的访问以避免“双重”查找

2023-12-11

我有这样的代码:

std::unordered_map<int64_t /*id_ord*/, LimitOrder> futOrders;

auto i = futOrders.find(orderId);
if (i == futOrders.end()) {
    LimitOrder& newOrder = futOrders[orderId];
            // work
} else {
    LimitOrder& futOrder = i->second;
            // another work
}

这里我执行“find”两次: 第一次:auto i = futOrders.find(orderId);第二次:LimitOrder& newOrder = futOrders[orderId];

我可以以某种方式重写它以避免“双重查找”吗?


您可以执行emplace,并检查返回值以了解该项目是否已插入:

std::unordered_map<int64_t /*id_ord*/, LimitOrder> futOrders;

auto i = futOrders.emplace(
           std::piecewise_construct, std::tie(orderId), std::make_tuple());
if (i.second) {
    LimitOrder& newOrder = i.first->second;
            // work
} else {
    LimitOrder& futOrder = i.first->second;
            // another work
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重写对集合的访问以避免“双重”查找 的相关文章

随机推荐

  • 浮点数集

    所以我想创建一组浮点数 其中两个数字在给定一定容差的情况下被视为相等 例如 如果我有一组 a set 1 2 3 如果我添加元素 1 00001 且容差为 1e 4 则结果集应该是 1 2 3 and not 1 1 00001 2 3 我
  • ld:找不到架构 x86_64 的符号[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我正在使用 C 学习原理和实践 并且在链接到正确的架构
  • 记录 setLevel 被忽略

    下面的代码是从文档中复制的 我应该能够看到所有信息日志 但我不这么认为 即使我已将 setLevel 设置为 INFO 我也只能看到警告及以上内容 为什么会发生这种情况 foo py import logging logger loggin
  • 不应用Boost Spirit解析规则

    我在这里看不到我的错误 这个规则可以解析一些东西 但最后两个样本不能 有人可以给我一个提示吗 目标是一个能够识别成员属性访问和成员函数调用的解析器 也以某种方式被束缚 a a para x a x a para x a para g par
  • 没有使用用于通知 UIKeyboardWillShowNotification 和 UIKeyboardWillHideNotification 的 Objective-C 选择器声明的方法

    最近更新 Xcode 后 这段曾经有效的代码不再有效 大多数选择器 都有自动更正功能 但以下代码除外 override func viewDidLoad super viewDidLoad NSNotificationCenter defa
  • 防止 NewtonSoft Json 添加尾随 0 [重复]

    这个问题在这里已经有答案了 我遇到了一个意想不到的问题NewtonSoft Json图书馆 看起来它会向没有小数部分的十进制值添加尾随 0 JsonConvert SerializeObject 1m 将返回以下字符串 1 0 虽然在很多情
  • Jenkins 插件 - 环境变量

    我正在使用 Jenkins 和 Testswarm 以及这个plugin 分叉源 我想获得 Testswarm 的 作业名称 其中包含 Jenkins 作业名称 内部版本号和 svn 修订号 将 JOB NAME 放入配置字段没有帮助 该变
  • 尝试让 Pyramid 在 Apache + mod_wsgi 下运行,但失败

    我已经安装了 mod wsgi 并运行 Apache2 我已经确认 mod wsgi 实际上可以通过以下方式工作this 当我尝试运行 Pyramid 时 问题就出现了 我收到内部服务器错误 并且我的 Apache 错误日志包含异常 Ass
  • Android 中的 https 请求、身份验证

    我目前正在尝试通过 http Get 调用对服务器进行身份验证 下面提供的代码在 java 项目中编译时可以工作 将正确的令牌返回给程序 但是 每当我尝试在 Android 中实现相同的代码时 我都不会通过 Get 调用返回令牌 在 And
  • 旋转位图图像

    我想旋转位图图像我写了一些代码并且它可以工作 TransformedBitmap TempImage new TransformedBitmap TempImage BeginInit TempImage Source MyImageSou
  • 在 MVC 创建视图上保存多对多关系数据

    我在保存创建视图的结果时遇到多对多关系的一些问题 我想为新用户配置文件创建一个创建页面 其中包含一个清单 让他们选择课程 多对多关系 我的观点取自记录Courses数据库并用复选框显示它们 一旦用户发布数据 我想更新我的userprofil
  • IIS7 ISAPI 过滤器模块和 HttpModule 事件 - 它们如何排列?

    因此 集成管道模式下的 IIS7 使用 IsapiFilterModule 来填充 ISAPI 过滤器 DLL 并在过滤器上触发正确的 事件 这与经典模式下的 IIS 或 IIS7 的早期版本有很大不同 因为这意味着 HttpModule
  • H2数据库Json字段Hibernate转换器异常

    我只是尝试在 h2 中插入一个 json 值 然后我想用 hibernate 转换器返回这个 json 值作为对象 但错误如下所示 我的插入查询是 INSERT INTO log id activities date VALUES 1 ac
  • SQL:如何对存储过程结果集进行谓词?

    我无法弄清楚的简单问题 不是 SQL 专家 抱歉 我想对 sp who2 的结果集进行选择 我怎么能够 对于前 从 sp who2 的结果集 选择 SPID 使用这样的环回查询 SELECT SPID Status Login HostNa
  • PostgreSQL - 将字符串转换为 ASCII 整数

    如何在 PostgreSQL 中获取字符串的 ASCII 值作为 int 例如 字符串S06 6X9A 目前 我正在使用 ASCII 函数 但它仅返回给定字符串的第一个字符 Use string to array S06 6X9A null
  • 跨类加载器投射?

    我怎样才能做到这一点 class Foo public static Foo get throws Exception ClassLoader cl new URLClassLoader new URL foo jar null Foo c
  • 读取特定文件夹下的所有txt文件,并将所有内容写入一个txt文件中

    我尝试阅读全部 txt文件夹中的文件并将每个文件中的所有内容写入另一个 txt 文件 但不知何故它只将一行写入txt 文件 我尝试过fwrite and file put contents 都不起作用 这是我的代码
  • 导入/导出 DataFusion 管道

    有谁知道是否可以以编程方式导入 导出 DataFlow 管道 已部署或处于草稿状态 我们的想法是编写一个脚本来删除并创建一个 DataFusion 实例 以避免在不使用时计费 通过 gloud 命令行 可以配置 DataFusion 集群并
  • 通过xml更改Android ActionBar中的标题文本颜色

    我想更改应用程序中 ActionBar 的标题文本颜色 我尝试了很多方法但我无法实现 我不想以编程方式执行此操作 因为当应用程序启动时 它会显示具有先前颜色的操作栏 然后更改为新颜色 我支持 Api Level 8 我的 xml 是用And
  • 重写对集合的访问以避免“双重”查找

    我有这样的代码 std unordered map