我正在构建一个应用程序,它接收来自不同货币交换的价格数据的更新。现在我需要选择最有效的容器。容器将使用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
是此应用程序的最佳选择,还是应该使用其他容器?
答案 0 :(得分:1)
好吧,列表插入将是恒定时间,但是您的列表应该是有序的,因此,您需要先找到正确的插入位置。这需要O(N)
时间!
因此,更喜欢基于有序树的容器(如std::multimap
)更有效。插入或搜索将花费O(log(N))
时间。价格应该是键。