【发布时间】:2014-10-20 11:37:52
【问题描述】:
我正在寻找最佳解决方案。我想存储对象:容器中的键值。我需要通过键对每个元素进行“良好”访问,并且我需要找到具有最低值的元素。
您会推荐什么容器?有没有比 std::map 更好的解决方案(在 STL 或 Boost 中)? (访问元素是可以的,但寻找最小值是 O(n) 我猜)..
[已编辑]
抱歉,我错过了添加一件非常重要的事情。我实际上想获得最低元素(具有最低值)并将其删除...
假设我的用法是:
1) 访问某些元素(按键)
2) 访问具有最低值的元素并将其删除
3) 如果容器不是空的,则转到第一步
我应该使用什么?你怎么看?
【问题讨论】:
-
好吧,您可以将
std::map与自定义比较器函数一起使用,以便它按值而不是键排序。那么“最低”条目将始终是yourMap.begin()。 -
@Joachim Pileborg:这怎么可能,因为
std::map需要一个二进制谓词,将两个元素键作为参数? -
@TNA 好吧,如果您有密钥,那么您就可以获取数据。如果你有数据,你可以用它来做比较。
-
@JoachimPileborg 等等,您是否建议比较器函数应该查询地图以获取数据?说得委婉一点,这……不是一个好主意。
-
@BartekBanachewicz 我没有说这是个好主意,但它是一种解决方案。
标签: c++ algorithm boost data-structures stl