c++ - std::map - 删除最后一个元素

标签 c++ stl map erase

我的 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/

相关文章:

scala - 在 Scala 中对 map 使用 find 函数

java - 列表与 map : Which takes less space and more efficient?

php - 使用 Codeigniter 事件记录进行 "within distance"查询

c++ - 创建一个由 boost 共享指针组成的 vector

c++ - 从文件中读取动态bitset写入的数据无法读取正确的数据

c++ - 使用 Direct2D 绘制 SVG 路径 : Can't draw elliptical arc

c++ - STL迭代器相等性是如何建立的?

c++ - 有什么方法可以验证 STL 容器的迭代器吗?

c++ - vector 的小字符串优化?

c++ - 如何在OpenAcc计算区域中直接(不使用指针作为函数参数)访问GPU上的数组?