とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

番兵を持つイテレータアダプタ書いてる (2)

こんな感じで使えればなぁと。ユーザーコードを書いてみます。以下のような感じで使えたらどうだろう?

int main(){
 using namespace std;
 {// '\0' を番兵にする
  typedef sentinel_iterator<const char*> cstring_iter;
  const char* s = "abc";
  cstring_iter begin(s), end;
  copy(begin, end, ostream_iterator<char>(cout)); cout << endl;
 }
 {// -1 を番兵にする
  typedef sentinel_iterator<vector<int>::const_iterator, -1> vec_sentinel_iter;
  vector<int> v; v.push_back(0); v.push_back(1); v.push_back(2); v.push_back(-1);
  vec_sentinel_iter begin(v.begin()), end;
  copy(begin, end, ostream_iterator<int>(cout)); cout << endl;
 }
}

出力

abc
012