std::list::size()
最近、線形の複雑性があると言及している人がいることに気付きました。一部の情報源
に
よると、これは実際には実装に依存しているため、標準では複雑さがどうあるべきかが規定されていません。このブログエントリ
のコメントには次のように書かれています。
実際には、使用している STL によって異なります。Microsoft Visual Studio V6 は size() を {return (_Size); として実装します。} 一方、gcc (少なくともバージョン 3.3.2 および 4.1.0 では) は { return std::distance(begin(), end()); のように行います。最初の速度は一定で、2 番目の速度は o(N) です。
- したがって、私の推測では、VC++ クラウド
size()
は常に複雑であり、Dinkumware はおそらく VC6 以降その事実を変えていないでしょう。私はそこにいますか? - 現在はどのように見えます
gcc
か? それが本当に O(n) である場合、なぜ開発者はそうすることにしたのですか?