https://twitter.com/kinaba のログ (twilog の方が便利です。)
deque::push_back の要求は今は償却O(1)になってような(つまり、元々の規格の文面が不十分だった。実装はそれでよい)。 / 真にO(1)な実装も一応気合いを入れれば可能だけど、そうするとイテレータをinvalidateしない要求が保てない、遅い等々現実的でない。 | |
23.1.1 は関係ない、というか、計算量を"計算時間"や"primitive操作の回数"で計ると無意味になるので"要素型Tにまつわる(←厳密な定義はない)演算の回数"を単位とするって意味であって、それ以上の意味を押しつけるのはちょっと無茶な誤読してるように見えるかなあ…。 | |
そこの文面を完全に厳密で形式的に直せるか、というのは面白い問いだと思うんだけど、なんか上手い案がまったく思いつかない。どうすりゃいいんだ。要素型 T や T* や T& や…を subobject として含む、とかでは sound でも complete でもない気がするし。 | |
言語組み込みの基本演算(ここ厳密に定義が必要)に加えて、Tに関してそのコンテナが要求する演算(Assignable, CopyConstructible 等々)の1回の実行も1単位としたときの演算回数、でいいか。それでいいような気もしてきた。 |