c – std :: map中的内存分配
作者:互联网
我正在做一个关于各种C字典实现(地图,字典,向量等)的报告.
使用std :: map进行插入的结果表明性能为O(log n).性能也有一致的高峰.我不是百分之百确定是什么造成了这种情况;我认为它们是由内存分配引起的,但我找不到任何文献/文档来证明这一点是不成功的.
任何人都可以清楚这件事或指出我正确的方向吗?
干杯.
解决方法:
你是对的:它是O(log n)的复杂性.但这是由于地图的排序性质(通常是基于二叉树的).
另见http://www.sgi.com/tech/stl/UniqueSortedAssociativeContainer.html,插入时有注释.最糟糕的情况是O(log n)并且如果你能暗示在哪里进行插入,则摊销O(1).
地图通常基于二叉树,需要进行平衡以保持良好的性能.您观察到的负载峰值可能与此平衡过程相对应
标签:c,stl,map,complexity-theory 来源: https://codeday.me/bug/20190726/1548333.html