重写对集合的访问以避免“双重"访问.发现

编程入门 行业动态 更新时间:2024-10-22 15:37:06
本文介绍了重写对集合的访问以避免“双重"访问.发现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有这样的代码:

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 }

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

Here I execute "find" twice: first time: auto i = futOrders.find(orderId); second time: LimitOrder& newOrder = futOrders[orderId];

我可以以某种方式重写它以避免重复查找"吗?

Can i rewrite it somehow to avoid "double find"?

推荐答案

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

You can perform an emplace, and check the return value to know whether the item was inserted or not:

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 }

更多推荐

重写对集合的访问以避免“双重"访问.发现

本文发布于:2023-11-10 22:08:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1576590.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:重写   发现   以避免   quot

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!