【发布时间】:2013-08-11 09:28:04
【问题描述】:
我知道有std::set::lower_bound,时间复杂度是O(log),我看到std::lower_bound在std::set::lower_bound上运行时比std::set::lower_bound慢得多。
我搜索了一下,发现了这个:
http://en.cppreference.com/w/cpp/algorithm/lower_bound http://en.cppreference.com/w/cpp/iterator/advance
因此很明显,由于std::advance 对于set::iterator 是线性的,所以整个std::lower_bound 占用了O(n)。
但是,当我使用它时,它的运行速度比O(n) 快得多(一些朋友也这么说),谁能解释一下原因或告诉我它不是那样的。
【问题讨论】:
标签: c++ algorithm stl set complexity-theory