我正在做一个关于各种C字典实现(地图,字典,向量等)的报告.

使用std :: map进行插入的结果表明性能为O(log n).性能也有一致的高峰.我不是百分之百确定是什么造成了这种情况;我认为它们是由内存分配引起的,但我找不到任何文献/文档来证明这一点是不成功的.

任何人都可以清楚这件事或指出我正确的方向吗?

干杯.


解决方法:

你是对的:它是O(log n)的复杂性.但这是由于地图的排序性质(通常是基于二叉树的).

另见http://www.sgi.com/tech/stl/UniqueSortedAssociativeContainer.html,插入时有注释.最糟糕的情况是O(log n)并且如果你能暗示在哪里进行插入,则摊销O(1).

地图通常基于二叉树,需要进行平衡以保持良好的性能.您观察到的负载峰值可能与此平衡过程相对应

标签: map, stl, c, complexity-theory

相关文章推荐

添加新评论,含*的栏目为必填