GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • cpprefjp - C++日本語リファレンス
  • GitHub Project

This view

  • Original page
  • New address

GeezerVison is showing cpprefjp.github.io — std::basic_const_iterator - cpprefjp C++日本語リファレンス

  1. リファレンス
  2. iterator
  3. basic_const_iterator

最終更新日時: 2026年08月28日 10時51分15秒 (JST)
Akira Takahashi が更新

履歴 編集

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
operator CI 定数イテレータ型への変換演算子 C++26

メンバ型

名前 説明 対応バージョン
iterator_type 基底イテレータの型Iterator C++26
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 ✅

参照

  • P2278R4 cbegin should always return a constant iterator
  • P2836R1 std::basic_const_iterator should follow its underlying type's convertibility
    • C++26で、基底イテレータが変換できる定数イテレータ型への変換演算子が追加された。この修正は欠陥報告 (DR) であり、C++23へ遡及して適用される
  • LWG Issue 4253. basic_const_iterator should provide iterator_type
    • C++26で、基底イテレータの型を取得できるよう公開メンバ型iterator_type(= Iterator)が追加された
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.