配列終端と STL アルゴリズム

STL アルゴリズムで配列を扱うときに、その終端をうまく扱う方法を紹介しておく。

// 配列の終端を扱うためのテンプレート関数
template <typename T, size_t N>
T* end_of(T (&array)[N]) { return array + N; }
// 利用例
char buf[YOUR_DEFINITION];
const char *p = std::find(buf, end_of(buf), CONDITION);
if (p != end_of(buf))
  // found the element
else
  // NOT found the element

# std::tr1::array を使えよ、といわれました…。 orz