在 std::map 中寻找最小值

Finding minimum value in std::map

对于非自平衡二叉搜索树,最坏情况下求最小值可以O(N),平均情况下O(log(N))遍历到对应的叶子节点。

根据 CPPreference,函数 std::map::begin() 的时间复杂度是常数。因此,进一步扩展它,取消引用 std::map::begin() 默认情况下产生最低键也需要常数时间。有人可以解释为什么会这样吗?

地图对象可以简单地维护一个指向最小元素的内部指针;如果树以改变哪个节点是最小节点的方式发生变异,则此时可以调整指向该元素的指针。因此,从指针返回迭代器是一个常量时间操作,因为不需要遍历树。

注意std::map 自平衡。