我的 map 是这样定义的:
map<string, LocationStruct> myLocations;
其中键是时间字符串
我在这张 map 中只保留了 40 个项目,当我达到 40 个项目时,我想放弃 map 中的最后一个项目。我知道我做不到myLocations.erase(myLocations.end())
,那么我该怎么做呢?
我确实希望 map 中的最后一项成为最旧的,因此也是先进先出的。数据将以相当快的速度(大约 20Hz)传入,所以我希望 map 能够跟上它。我确实需要根据时间查找数据,所以我确实需要它作为关键,但我愿意接受实现此目的的其他方法。
字符串的格式非常冗长“Thursday June 21 18:44:21:281”,但为了简单起见,我可以将其缩减为自纪元以来的秒数。这是我第一次尝试,还没有考虑太多格式。
最佳答案
最惯用的方式是:
myLocations.erase( std::prev( myLocations.end() ) );
如果您没有 C++11,请使用您的相应函数 工具箱。
关于c++ - std::map - 删除最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11143214/