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