Create  Edit  Diff  FrontPage  Index  Search  Changes  Login

はじめてのひき - IntSizetIterator Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

vector<int> をどうぶん回すべきか。ありそうな主張を適当にまとめてみる。個人的には、

* まわりのコードにあわせる
** 仕事じゃなければ、例外として気分で逆らってみたりする
* 仕事なら基本 const_iterator
* 趣味でかつ gcc の warning option つけてるような時は size_t
* 適当な時は int
** 例外として気分で変える

なんか書いてない派閥の主張とかある人は足してくださると良いかとー

! int 派

!! Pros

* シンプルだよ
* アンダーフローするコードはありえないよ

!! Cons

* 64bit 環境で warning 出るんじゃボケ

! size_t 派

!! Pros

* 高速な時があるよ
* 型一致してるし
* 本質的に index は正または 0 であるとかなんとか

!! Cons

* なんか include しないと使えないやろボケ
* デクリメントする時アンダーフローするんじゃボケ
* なんとなくかっこ悪いんじゃボケ
* printf で出力する方法知らんのじゃボケ
** iostream 使えよボケ
* size じゃないもの(index)に size_t は違和感あるんじゃボケ

! const_iterator 派

!! Pros

* list に変えても動くよ
* v[i] より *iter の方がなんとなく良くないか
* なんとなくたくさんタイプすると仕事してる気になるよ

!! Cons

* 長いんじゃボケ
* typedef とかもうざいんじゃボケ
* list なんて使わねーよボケ
* set とかに変えることとかはありえねーよボケ
* vector<Obj*> をぶんまわすと (*iter)-> となってキモいよボケ
* index 欲しくなった時にうざいんじゃボケ
* iterator はデバッグ出力しにくいんじゃボケ

! iterator 派

いるのだろうか。

!! Pros

!! Cons

* ちゅーとはんぱじゃボケ

! C++0x 派

for_each(v.begin(), v.end(), <>(int x) (cout << x << endl));

とか

for (int x : v) cout << x << endl;

とか

for (auto iter = v.begin(); iter != v.end(); ++iter) cout << *iter << endl;

とかかな

!! Pros

!! Cons

* 実装されてねーよボケ
* 中二病かボケ

! unsigned, unsigned int 派

!! Pros

* unsigned は size_t よりうちやすいよ http://twitter.com/blanketsky/statuses/1115295773

!! Cons

* unsinged と typo するんじゃボケ

! size_type 派
!! Pros
* size_typeがsize_tじゃないコンテナでも動くよ
!! Cons
* そんなコンテナあるのかボケ