C++1z 隣接イテレータ

C++1zから、イテレータの分類に「隣接イテレータ (contiguous iterator)」というものが追加されます。

ランダムアクセスイテレータだけではポインタ操作ができるかわからないので、メモリが隣接していることを表すイテレータの分類を追加することになりました。隣接イテレータは、ランダムアクセスイテレータの要件を含みます。

また、コンテナのiteratorおよびconst_iteratorが隣接イテレータであるコンテナは「隣接コンテナ (contiguous container)」と呼ばれます。

以下のコンテナは、隣接コンテナであることが規定されます:

C++1zの段階ではコンセプトだけを決めて、隣接イテレータや隣接コンテナを判定する仕組みは提供されません。

訳語の選択

  • 英語の似たような単語としてcontinuousとcontiguousがある。
  • continuousは「アメリカの州がつながっている」とか「ヨーローッパの国が地続きになっている」という用途に使われる。これが「連続」と訳されることが多い。
  • contiguousは、音楽アルバムでトラックごとのつながりのような文脈で使われる。これはadjacencyとの類義語。
  • メモリの文脈ではcontiguousが使われる。
  • 日本語のメモリの文脈でも「隣接」という言葉が使われているようなので、隣接を採用した。

参照

お断り

この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。