【发布时间】:2012-06-12 09:27:12
【问题描述】:
清除函数的时间复杂度为 std::map 是多少?
我说它是 O(1) 对吗?
【问题讨论】:
-
它必须销毁所有的成员对象。听起来像 O(n)。
-
@BoPersson:但是如果元素有一个微不足道的析构函数呢?
-
然后它会运行得更快。 :-) 实际花费的时间是
k*n,其中k取决于成员对象的类型。但是在大 O 条件下,即使k非常小,它仍然是 O(n)。 -
@BoPersson:也许,也许不是。
is_trivially_destructible是一个编译时特征,因此它可以在编译时推断出不需要这样的操作。 -
@jrok: 恐怕
map必须在每个节点上调用deallocate获取更多代码。
标签: c++ map time-complexity