9#include <unordered_map>
18 using MapType = std::unordered_map<OrderId, Order*>;
23 explicit OrderMap(std::size_t initial_capacity = 1024) {
24 map_.reserve(initial_capacity);
33 auto result = map_.try_emplace(order->order_id, order);
41 return map_.erase(order_id) > 0;
48 auto it = map_.find(order_id);
49 return (it != map_.end()) ? it->second :
nullptr;
53 auto it = map_.find(order_id);
54 return (it != map_.end()) ? it->second :
nullptr;
59 return map_.contains(order_id);
63 [[nodiscard]] std::size_t
size() const noexcept {
68 [[nodiscard]]
bool empty() const noexcept {
74 map_.reserve(capacity);
Hash table for fast OrderId -> Order* lookup Uses std::unordered_map for simplicity and performance P...
void reserve(std::size_t capacity)
Reserve capacity for orders.
bool empty() const noexcept
Check if map is empty.
const_iterator cend() const noexcept
const_iterator begin() const noexcept
const Order * find(OrderId order_id) const noexcept
MapType::iterator iterator
void clear() noexcept
Clear all orders.
bool contains(OrderId order_id) const noexcept
Check if order exists.
iterator begin() noexcept
Iterators.
bool insert(Order *order) noexcept
Insert order into map.
OrderMap(std::size_t initial_capacity=1024)
Constructor with initial capacity.
std::size_t size() const noexcept
Get number of orders in map.
Order * find(OrderId order_id) noexcept
Find order by OrderId.
bool erase(OrderId order_id) noexcept
Remove order from map.
const_iterator end() const noexcept
MapType::const_iterator const_iterator
const_iterator cbegin() const noexcept
std::unordered_map< OrderId, Order * > MapType
#define SLICK_DETAIL_NAMESPACE_BEGIN
#define SLICK_DETAIL_NAMESPACE_END
#define SLICK_ASSERT(expr)
uint64_t OrderId
Unique order identifier.
Order structure for Level 3 orderbook Uses intrusive list design for zero-allocation order queues at ...