list :: size()真的是O(n)吗?

最近,我注意到有人提到它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),为什么开发人员选择这样做?


慕尼黑8549860
浏览 694回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP