Моя карта определяется как таковую: map<string, LocationStruct> myLocations;
где ключ Строка временистанд :: карта - стереть последний элемент
Я только держать 40 пунктов в этой карте, и хотел бы отказаться от последнего пункта на карте, когда я достиг 40 предметов. Я знаю, что я не могу сделать myLocations.erase(myLocations.end())
, так как я могу это сделать?
Я намереваюсь, чтобы последний элемент на карте был самым старым, и поэтому FIFO. Данные будут поступать довольно быстро (около 20 Гц), поэтому я надеюсь, что карта может не отставать от нее. Мне нужно искать данные, основанные на времени, поэтому мне действительно нужно, чтобы это был ключ, но я открыт для альтернативных методов достижения этого.
Формат строки - очень подробный «Четверг 21 июня 18: 44: 21: 281», хотя я могу сделать это, чтобы быть секундами с эпохи для простоты. Это был мой первый выход, и он не слишком много думал о формате.
бы 'myLocations.erase (myLocations.rbegin())' не делать эту работу? – Rook
Похоже, что вместо (отсортированной) карты вам нужна какая-то очередь с постоянной длиной/приоритетом. – kennytm
@Rook 'map <> :: erase' принимает в качестве аргумента позиции итератор, а не reverse_iterator. –