订单簿代表哪个STL容器?

时间:2017-01-23 14:19:06

标签: c++ stl containers

我正在构建一个应用程序,它接收来自不同货币交换的价格数据的更新。现在我需要选择最有效的容器。容器将使用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可能是一个不错的选择,因为它allows constant time insert and erase operations anywhere within the sequence

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

1 个答案:

答案 0 :(得分:1)

好吧,列表插入将是恒定时间,但是您的列表应该是有序的,因此,您需要先找到正确的插入位置。这需要O(N)时间! 因此,更喜欢基于有序树的容器(如std::multimap)更有效。插入或搜索将花费O(log(N))时间。价格应该是