用于订单簿表示的哪个 STL 容器

Which STL container for Orderbook representation?

本文关键字:STL 容器 单簿 表示 用于      更新时间:2023-10-16

我正在构建一个应用程序,该应用程序接收来自不同货币交易所的价格数据更新。现在我需要选择最有效的容器。容器将使用类型为 Entry 的元素:

struct Entry
{
    std::string exchange_name;
    double price;
    double amount;
}

条目必须按其价格排序,升序:

Ex.Name    Price    Amount
  "A"       1.2       23
  "B"       1.3       3
  "A"       1.4       1.2
  "C"       1.5       4
  "A"       1.6       2

容器上会有很多插入和移除。我想每秒最多 200 次是可能的。容器内的值可能不const,以便可以更改特定条目的数量。

到目前为止,我得出的结论是,std::list可能是一个不错的选择,因为它允许序列内任何地方的恒定时间插入和擦除操作。

std::list是此应用程序的最佳选择,还是应该使用其他容器?

好吧,列表插入将是恒定的时间,但是您的列表应该是有序的,因此,您需要首先找到合适的插入位置。这需要O(N)时间!因此,首选像 std::multimap 这样的基于有序树的容器要高效得多。插入或搜索需要O(log(N))时间。价格应该是关键