最終更新日時(UTC):
が更新

履歴 編集

class template
<iterator>

std::basic_const_iterator(C++23)

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 Iteratorforward_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は次のように決定される

  • Iteratorcontiguous_iteratorのモデルとなる場合
    • contiguous_iterator_tag
  • そうではなく、Iteratorrandom_access_iteratorのモデルとなる場合
    • random_access_iterator_tag
  • そうではなく、Iteratorbidirectional_iteratorのモデルとなる場合
    • bidirectional_iterator_tag
  • そうではなく、Iteratorforward_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

処理系

参照