閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

その発想は無かった(-_-)

もらったソースに以下のようなコードがありました。

std::vector arr;
for(int i = 0; i < 10; ++i) {
  arr.push_back();
  arr[i] = i;
}

一瞬何しているかわからなかった。着想がすばらしい、と少し思いました。さて、これは、突っ込むべきでしょうか。

ていうか STLportvector には引数を取らない push_back があったんですね。そんなの規格にもリファレンスにも書いていなかったような。そりゃ戸惑いますって……。ソースを読んだら _STLP_NO_ANACHRONISMS マクロが定義されている時のみ有効らしい。 ANACHRONISMS ってことは、昔の規格では引数なしの push_back もあったんですかね。新参にはわからない世界だ。

まあ現在の規格では消え去っているものを使用するのは良くないだろうし、気が向いたら突っ込んでおこう。これ、実際にはポインタの配列なんですが、構造体なんかの実体を取る配列だったら効率にも影響出るでしょうし。あれ、出ないかな、出るよね……。