У меня есть map<uint, Order*> orders
, где Order - это определенный класс с соответствующими полями, такими как id, время, цена и объем. У меня также есть ветка, которая прослушивает добавления и удаления входящих заказов для карты, определенной ниже.
void System::OrderDeleted_Thread(unsigned int order_id)
{
if(orders.find(order_id) != orders.end())
{
Order* order = orders[order_id];
orders.erase(order_id);
delete order;
}
}
Моя проблема очень похожа на эту:
Ошибка сегментации в функции std std :: _ Rb_tree_rebalance_for_erase ()
Мой вопрос: как я могу выполнить итерацию по моей карте заказов, если программа не выдаст мне ошибку, когда придет время перебалансировать дерево? Как и в решении, указанном в ссылке, я вынул метод .erase (uint) и заставил его работать. К сожалению, я не могу хранить карту из нескольких десятков тысяч ключей.
Заранее спасибо!