用于订单簿表示的哪个 STL 容器
Which STL container for Orderbook representation?
我正在构建一个应用程序,该应用程序接收来自不同货币交易所的价格数据更新。现在我需要选择最有效的容器。容器将使用类型为 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))
时间。价格应该是关键。
相关文章:
- 在STL容器中使用模板类
- 检查函数返回类型是否与STL容器类型值相同
- 为什么 STL 容器适配器堆栈中的 top 返回常量引用?
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- 对象 C++ 向量的 STL 容器
- 如何在不破坏现有应用程序的情况下更改 API 中 stl 容器的数据类型?
- 在 STL 容器的 STL 容器上调用 clear
- "迭代器"和"const_iterator"不是 STL 容器的必需成员?
- 删除包含包含动态对象的 STL 容器的智能指针
- C++:在子类中扩展静态 STL 容器/映射成员?
- ostream 运算符<< 为获取 STL 容器而过载,传递 std::string 会破坏它?
- 没有 STL 容器的迭代器
- 为什么某些 STL 容器(堆栈、队列、优先级队列)不支持迭代器?
- 接受任何 STL 容器的函数
- C++ STL 容器中优先级搜索的优雅方法
- 我们如何打印出C++ STL 容器的value_type?
- 获取嵌套 stl 容器的大小(以字节为单位)
- 如何在C++中重新实现包含指针的 STL 容器的类的迭代器
- 迭代器和 STL 容器的关系
- 如何用索引增量generate_n填充STL容器