読者です 読者をやめる 読者になる 読者になる

どこかのだれかへ

職業ゲームプログラマ。気になったニュースのピックアップや開発日記などを書いています。

独自ListクラスのついでにIteratorも実装したい

std::listはアロケーションが発生して無駄な場面が時折あるので(例えば描画コマンドとか)独自のリストクラスを作成中。その中でstd::iteratorも実装している。

 

昔なら面倒で実装しなかったが、C++11になってfor-eachも使えるようになった。std::iteratorを実装しておけば、これらの機能も独自コンテナで使えるので、実装すると格段に便利になる。あとは単純に一回実装してみたかったというのもあったり。

 

Iteratorの実装は

std::iterator - cppreference.com

iterator - C++ Reference

等のC++リファレンスを参照している。リファンレスに超簡単なサンプルがあったので助かった。作って知ったが、iteratorってたくさん種類あるんだな。

 

実装しててちょっと嫌だったのは、for-eachを使うに当たり、List::begin()とlist::end()の実装が必要なのだけれど、僕のコーディング規約では関数はアッパーキャメルケース(List::Begin())なので、ここだけ気持ちが悪い。ただこれはもう割り切って諦めている。

 

とりあえず現段階でfor-eachが使えるようになったので、暇な時にでも軽く説明するのもいいかもしれない。