当前位置:  开发笔记 > 编程语言 > 正文

STL :: Map - 浏览列表或使用find?

如何解决《STL::Map-浏览列表或使用find?》经验,为你挑选了2个好方法。

假设我有一个方法需要从地图中提取8个值,其中包含100个元素.你认为哪个更好:

从头到尾进行一次for循环,通过打开钥匙拉出元素?

或者使用find 8次来获取这些值?



1> SoapBox..:

走在列表中需要花费O(n)时间来查找随机元素.

Map是一个平衡的二叉树,因此查找是O(log n).

因此,8执行8*log2(n)的结果,并且行列表是(n).列表越大,增益越大,但在所有随机情况下,执行查找将比执行迭代更快.

在非随机情况下,如果有理由将所需的项目在树中或在"开始"(左侧)附近彼此靠近,那么步行/迭代将更快.但这似乎是不相干的.



2> Artelius..:

虽然我选择了这个find选项,但人们对渐近性能的压力过大.

事实上,渐近性能是可以接收相当大的输入的算法的便利指南,但即便如此,它也不是万无一失的.对于任何合理的输入,具有比另一个更差的渐近性能的算法很可能更快.

然后有时候你的输入大小相当小(甚至是固定的).在这种情况下,渐近性能几乎毫无意义.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有