C++1zから、イテレータの分類に「隣接イテレータ (contiguous iterator)」というものが追加されます。
ランダムアクセスイテレータだけではポインタ操作ができるかわからないので、メモリが隣接していることを表すイテレータの分類を追加することになりました。隣接イテレータは、ランダムアクセスイテレータの要件を含みます。
また、コンテナのiterator
およびconst_iterator
が隣接イテレータであるコンテナは「隣接コンテナ (contiguous container)」と呼ばれます。
以下のコンテナは、隣接コンテナであることが規定されます:
basic_string
array
bool
以外を要素型とするvector
valarray
(の非メンバ関数であるstd::begin()
、std::end()
で返されるイテレータは隣接イテレータ)
C++1zの段階ではコンセプトだけを決めて、隣接イテレータや隣接コンテナを判定する仕組みは提供されません。
訳語の選択
- 英語の似たような単語としてcontinuousとcontiguousがある。
- continuousは「アメリカの州がつながっている」とか「ヨーローッパの国が地続きになっている」という用途に使われる。これが「連続」と訳されることが多い。
- contiguousは、音楽アルバムでトラックごとのつながりのような文脈で使われる。これはadjacencyとの類義語。
- メモリの文脈ではcontiguousが使われる。
- 日本語のメモリの文脈でも「隣接」という言葉が使われているようなので、隣接を採用した。
参照
お断り
この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。