namespace std {
template<input_iterator Iterator>
class basic_const_iterator;
}
概要
basic_const_iterator
は、イテレータをラップし、元の要素を定数(const
)として参照するイテレータアダプタである。その他の操作は、元のイテレータそのものの動作をする。
メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++23 |
base |
元のイテレータを取得する | C++23 |
operator* |
間接参照演算子 | C++23 |
operator-> |
メンバアクセス演算子 | C++23 |
operator++ |
イテレータをインクリメントする | C++23 |
operator-- |
イテレータをデクリメントする | C++23 |
operator+= |
イテレータ自身を進める | C++23 |
operator-= |
イテレータ自身を逆に進める | C++23 |
operator- |
2つのbasic_const_iterator の差を求める |
C++23 |
operator[] |
任意の位置にランダムアクセスする | C++23 |
operator== |
等値比較 | C++23 |
operator!= |
非等値比較 (== により使用可能) |
C++23 |
operator< |
左辺が右辺より小さいかの判定を行う | C++23 |
operator<= |
左辺が右辺以下かの判定を行う | C++23 |
operator> |
左辺が右辺より大きいかの判定を行う | C++23 |
operator>= |
左辺が右辺以上かの判定を行う | C++23 |
operator<=> |
三方比較を行う | C++23 |
メンバ型
名前 | 説明 | 対応バージョン |
---|---|---|
iterator_concept |
Iterator がモデルとなる最も強いイテレータコンセプトに対応するイテレータタグ型 |
C++23 |
iterator_category |
Iterator がforward_iterator のモデルである場合にのみiterator_traits<Iterator>::iterator_category として定義される |
C++23 |
value_type |
iter_value_t<Iterator> |
C++23 |
difference_type |
iter_difference_t<Iterator> |
C++23 |
iterator_concept
は次のように決定される
Iterator
がcontiguous_iterator
のモデルとなる場合contiguous_iterator_tag
- そうではなく、
Iterator
がrandom_access_iterator
のモデルとなる場合random_access_iterator_tag
- そうではなく、
Iterator
がbidirectional_iterator
のモデルとなる場合bidirectional_iterator_tag
- そうではなく、
Iterator
がforward_iterator
のモデルとなる場合forward_iterator_tag
- それ以外の場合
input_iterator_tag
非メンバ(Hidden friends)関数
名前 | 説明 | 対応バージョン |
---|---|---|
operator< |
左辺が右辺より小さいかの判定を行う | C++23 |
operator<= |
左辺が右辺以下かの判定を行う | C++23 |
operator> |
左辺が右辺より大きいかの判定を行う | C++23 |
operator>= |
左辺が右辺以上かの判定を行う | C++23 |
operator+ |
イテレータを進める | C++23 |
operator- |
イテレータを逆に進める | C++23 |
operator- |
2つのbasic_const_iterator の差を求める |
C++23 |
iter_move |
イテレータの要素の移動 | C++23 |
非メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
make_const_iterator |
basic_const_iterator のヘルパ関数 |
C++23 |
make_const_sentinel |
basic_const_iterator のヘルパ関数 |
C++23 |
特殊化
名前 | 説明 | 対応バージョン |
---|---|---|
common_type |
basic_const_iterator とイテレータ型の間の共通の型を求める |
C++23 |
例
#include <iterator>
#include <vector>
#include <iostream>
int main() {
std::vector vec = {1, 2, 3, 4, 5};
auto cit = std::make_const_iterator(vec.begin());
std::cout << *cit << '\n';
++cit;
std::cout << *cit << '\n';
// 要素を変更できない
//*cit = 0;
}
出力
1
2
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: 13.1 ✅
- Visual C++: 2022 Update 6 ✅