最近,我注意到有人提到它std::list::size()具有线性复杂性。
根据某些 消息来源,这实际上取决于实现,因为该标准并未说明复杂性。此博客文章中
的评论说:
实际上,这取决于您使用的STL。Microsoft 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),为什么开发人员选择这样做?
相关分类