好き勝手に・げーあにん?

ファミコンと同い年の社会人ヌルオタの日記

BOOST_FOREACH の存在をさっき知る

そんな便利なものがあったのかorz

さっそく使ってみようと思ったら、使ってるバージョンが 1.33.1 で入ってなかったorz

過去に同じようなものを作ろうとして挫折したんだけど、やる人がやればやっぱりできるものなんだなぁ‥‥。

↓挫折した時の残骸

template<typename T, size_t N>
size_t lengthof(T (&)[N]) {return N;}

#define foreach_iterator(T, it, list) \
  for (T it = (list).begin(); it != (list).end(); ++it)

#define foreach_pointer(T, value, list, size) \
  for (T value = (list); value != (list)+(size); ++value)

#define foreach(T, value, list) \
  foreach_pointer(T, value, list, lengthof(list))

boostのみたいに、begin と end をマクロかテンプレート関数にして統一化できないのか?という発想までは行ったんだけど、結局、挫折して分けたという‥‥。しかも、参照返さず、イテレータとポインタのまんまだし。すごく‥‥絶望しました‥‥orz

配列(というかポインタ)はなんだかんだで、数が指定したくなるよね(負け惜しみ)。