最近,我注意到有人提到它std::list::size()具有線性復(fù)雜性。根據(jù)某些 消息來源,這實(shí)際上取決于實(shí)現(xiàn),因?yàn)樵摌?biāo)準(zhǔn)并未說明復(fù)雜性。此博客文章中的評(píng)論說:實(shí)際上,這取決于您使用的STL。Microsoft Visual Studio V6將size()實(shí)現(xiàn)為{return(_Size); },而gcc(至少在版本3.3.2和4.1.0中)按{return std :: distance(begin(),end()); }第一個(gè)具有恒定速度,第二個(gè)具有o(N)速度所以我的猜測(cè)是,對(duì)于VC ++人群來說,size()其復(fù)雜性一直存在,因?yàn)镈inkumware自VC6以來可能不會(huì)改變這一事實(shí)。我在那里嗎?目前看起來像gcc什么?如果確實(shí)是O(n),為什么開發(fā)人員選擇這樣做?
list :: size()真的是O(n)嗎?
慕尼黑8549860
2019-11-28 14:05:09