GeezerVison is showing cpprefjp.github.io — std::counted_iterator - cpprefjp C++日本語リファレンス
最終更新日時:
2026年09月19日 21時31分51秒 (JST)
rotarymars
が更新
履歴
編集
class template
<iterator>
std:: counted_iterator (C++20)
概要
counted_iteratorは、イテレータをラップしてそこから指定されたカウント数の範囲を表現するイテレータアダプタである。
イテレータを受け取る汎用アルゴリズムにおいて、終了位置を事前に知ることなくある位置から任意の個数の要素の範囲を表現し、操作するのに利用できる。
counted_iteratorは指定されたカウント数の範囲内でのみ進行可能である事を除けば、元のイテレータと同じ動作をする。
メンバ関数
非メンバ(Hidden friends )関数
名前
説明
対応バージョン
operator-
2つのcounted_iteratorの差を求める
C++20
operator+
イテレータを進める
C++20
operator==
等値比較
C++20
operator!=
非等値比較 (== により使用可能)
C++20
operator<=>
三方比較
C++20
operator<
左辺が右辺より小さいかの判定を行う (<=> により使用可能)
C++20
operator<=
左辺が右辺以下かの判定を行う (<=> により使用可能)
C++20
operator>
左辺が右辺より大きいかの判定を行う (<=> により使用可能)
C++20
operator>=
左辺が右辺以上かの判定を行う (<=> により使用可能)
C++20
iter_move
イテレータの要素の移動
C++20
iter_swap
イテレータの要素の交換
C++20
メンバ型
名前
説明
対応バージョン
iterator_type
I
C++20
value_type
iter_value_t <I>※1
C++20
difference_type
iter_difference_t <I>
C++20
iterator_concept
typename I::iterator_concept※2
C++20
iterator_category
typename I::iterator_category※2
C++20
例
#include <iostream>
#include <iterator>
#include <ranges>
#include <vector>
int main () {
std::vector < int > vec = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
std::counted_iterator ci { std :: ranges::begin ( vec ) + 3 , 5 };
// 既存のシーケンスの部分範囲をイテレートする
for (; ci != std :: default_sentinel ; ++ ci ) {
std::cout << * ci << " " ;
}
std::cout << '\n' ;
// subrange と共に用いて範囲forでイテレートする
for ( auto n : std :: ranges::subrange { std::counted_iterator { std :: ranges::begin ( vec ), 5 }, std :: default_sentinel }) {
std::cout << n << " " ;
}
}
出力
4 5 6 7 8
1 2 3 4 5
バージョン
言語
処理系
関連項目
参照