我有這樣的代碼:改寫訪問集合,以避免「雙重」發現
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];
我可以重寫它以某種方式避免「雙重發現」?
這有需要映射類型的建築甚至是缺點時,它已經在地圖上存在。 (一個不必要的和潛在的昂貴操作。) – Mankarse
是的。我不知道用'emplace'也可以做到這一點。 +1給你的答案。 – jrok