【发布时间】:2015-03-29 15:57:36
【问题描述】:
假设我有一个表单结构。
struct Order {
int id;
double price;
// more data
}
ID 是唯一标识符。现在我要在OrderBook 中跟踪这些Orders。我需要提供一个插入(创建一个新的订单对象)和一个擦除方法(删除具有特定 ID 的订单)。这个想法当然是尽可能高效。
struct OrderBook {
unordered_map<int, Order> orders; // ID -> Orders
// ...
}
此外,我必须快速访问当前订单簿中价格最高的订单。
我正在考虑在一个数据结构(可能是set?)中包含一对pair<double, id>(用于价格和ID)类型,按字典顺序排序。插入将是有效的(O(log n)),但由于数据结构是按价格而不是按 ID 排序的,因此从该数据结构中查找和删除元素将在(O(n))中。那么我可以在 Order 对象中存储一个指向 Price/ID 对的指针吗?但这仍然不会在集合内删除它吗?有什么想法吗?
【问题讨论】:
标签: c++ c++11 data-structures stl