【发布时间】:2010-09-18 17:43:59
【问题描述】:
最近,我注意到有人提到std::list::size() 具有线性复杂度。
根据somesources,这实际上取决于实现,因为标准没有说明复杂性必须是什么。
评论in this blog entry 说:
其实这要看你是哪个STL 正在使用。微软 Visual Studio V6 将 size() 实现为 {return (_Size); } 而 gcc(至少在版本中 3.3.2 和 4.1.0) 这样做 { return std::distance(begin(), end()); } 这 第一个恒速,第二个 有 o(N) 速度
- 所以我的猜测是,对于 VC++ 人群,
size()与 Dinkumware 一样具有恒定的复杂性 自 VC6 以来可能不会改变这一事实。我在吗?
-
gcc中的当前情况如何?如果真的是 O(n),为什么 开发者选择这样做?
【问题讨论】:
标签: c++ list stl complexity-theory big-o