1
|
sum1stolemyname · 技术社区 · 14 年前 |
![]() |
1
3
将它们作为引用或常量引用传递,然后再次运行测试。
|
![]() |
2
3
注意,在这里编写代码时,您将按值传递向量和映射,也就是说,您将在每次调用时重建每个映射的新副本。这显然是压倒性的搜索时间。
|
![]() |
3
1
除了像其他答案提到的那样使用引用来避免复制之外,这里的算法复杂性也有所不同。
简单解释一下,这意味着在向量中查找对象需要K1*n的时间,而映射需要K2*log(n)的时间,其中K1和K2是一些常数,取决于向量和映射的实现。 在实践中哪个更快取决于容器的大小和常量是什么(我认为可以肯定地说k1会更快)。 像缓存一致性这样的东西也会在这里发挥作用,如果你的容器很小,所有的东西都会在缓存中,用于向量,而不是地图(有了缓存,常量也不会是常量,但那是另一回事……) |