例のinline展開絡みの話
長くなったのでこっちに。ちょっとコメントに書こうと思ったので珍しく言葉遣いが丁寧になってますが。
まず、ACM/ICPCやPKU JudgeOnline(以下PKU)などで、vector
話を戻して、PKUなどではvector
あと「仕様なのかバグなのか」っていうのは完全に俺の書き方が悪かったですw 正しくは、「意図的にinline展開していないのか、したかったんだけどされてないことに気付いてないのか」です。といっても、コンパイラを作る人が決めることなので文句は言えないし、言うつもりもなく(言ってますがw)、実際に-O2にすれば解決してしまう些細な問題です。問題は現実的に様々なプログラミングコンテストで、そう言うことを把握しているのかどうか分かりませんが、-O1が用いられていると言うことです。
何が問題なのかというと、本来言語の機能をフル活用して、洗練されたアルゴリズムを書くことで競われるはずのプログラミングコンテストで、言語の機能が制限されているという事です。俺はboostやSTLはinline展開されることを前提に書かれていると信じていますし、C++も安全かつ柔軟に高速なコードが書けるようにinlineというキーワードを持っているのだと思っています。その機能を部分的に殺されたC++を使っていると、先ほどのようにvector使えば良い場所を静的配列に置き換えたりと、「無駄な」作業が生じます。しかし、そのオプションでやるのが大会のルールですので仕方ないと言えば仕方ありません。でも馬鹿らしいと思います。界王拳を使った状態のC++に戦わせてやりたいです。解ける問題が一気に増えるわけでもないので、気持ちよくプログラムを書くためにも-O2を付けて貰いたいところです。
とりあえずそんな感じです。