Iterator のメソッドは大量にある。

忘れた頃にいつも探しているので用途別にまとめた。

(まとめていないものもあるので要注意!)

単体走査

入力となるイテレータが一つしかないメソッド。

移動

イテレータを進めたり戻したりする。

next
イテレータを 1 個だけ進めて値を取得。
nth
イテレータを n + 1 個だけ進めて値を取得。
position
条件を満たすまでイテレータを進め、インデックスを取得。
rposition
条件を満たすまで後方イテレータで戻り、インデックスを取得。

判定

対象のイテレータが条件を満たすかを判定する。

all
全ての要素が条件を満たすかを判定。
any
任意の要素が条件を満たすかを判定。
is_sorted
要素が昇順にソート済かを判定。
is_sorted_by
比較関数を指定、要素が昇順にソート済かを判定。
is_sorted_by_key
基準関数を指定、要素が昇順にソート済かを判定。

集約

複数の要素から一つの値を得る。

count
要素数の取得。
sum
全要素の総和の取得[1]
product
全要素の総乗の取得[1]
reduce
汎用的な集約処理、初期値なし。
fold
汎用的な集約処理、初期値あり。
try_reduce
reduce の失敗可能版。
try_fold
fold の失敗可能版。

写像

元のイテレータの要素を写像するイテレータを生成する。

map
写像関数を指定して写像。
enumerate
要素を連番とのタプルにして写像。
copied
要素をコピーして写像。
cloned
要素をクローンして写像。

制御

元のイテレータの並びを変えたイテレータを生成する。

step_by
元の並びを一定間隔で読み飛ばす。
rev
元の並びを後方イテレータにより反転。
cycle
元の並びを記録して反復する。
peekable
前進なしで繰り返し値を読めるようサポート。
fuse
None による終了を保証[2]

単体読取

条件を満たす要素を一つだけ取得する。

find
条件を満たす要素を先頭から検索。
last
末尾の要素を取得。
min
最小値を取得。
max
最大値を取得。
min_by
比較関数を指定、最小値を取得。
max_by
比較関数を指定、最大値を取得。
min_by_key
基準関数を指定、最小値を取得。
max_by_key
基準関数を指定、最大値を取得。

複数読取

条件を満たす要素を読むためのイテレータを生成する。

take
続く n 個の要素を対象とする。
skip
続く n 個の要素を無視する。
take_while
指定条件が連続する限り要素を対象とする。
skip_while
指定条件が連続する限り要素を無視する。
filter
条件を満たす要素を全て対象とする。

複合処理

他のグループのメソッドを少し改変したメソッド。

find_map
find して map の複合操作。
filter_map
filter して map の複合操作。
flat_map
map して flatten の複合操作。
scan
fold の集計過程を列挙。

副作用

イテレータの外への副作用を意図した処理を実行する。

for_each
各要素を元に処理を実行、戻り値はなし。
inspect
各要素を元に処理を実行、戻り値は同じ並びのイテレータ。
try_for_each
for_each の失敗可能版。

その他

他のどのグループにも属さないが重要なメソッド。

collect
イテレータからコレクションを生成。
size_hint
残り要素数の下限と上限。
by_ref
イテレータの再利用を促進。

複数走査

複数のイテレータまたはコレクションが関係するメソッド。

比較

二つのイテレータ x と y の要素の並びを比較する。

eq
並びが一致するかを判定。
ne
並びが一致しないかを判定。
lt
並びを辞書順で比較、x < y かを判定。
le
並びを辞書順で比較、x ≤ y かを判定。
gt
並びを辞書順で比較、x > y かを判定。
ge
並びを辞書順で比較、x ≥ y かを判定。
cmp
並びを辞書順で比較、順序関係を取得。
partial_cmp
並びを辞書順で比較、半順序関係を取得。
eq_by
比較関数を指定、並びが一致するかを判定。
cmp_by
比較関数を指定、並びを辞書順で比較、順序関係を取得。
partial_cmp_by
比較関数を指定、並びを辞書順で比較、半順序関係を取得。

合成分解

イテレータを合成したり分解したりする。

chain
二つのイテレータを直列に連結したイテレータを生成。
zip
二つのイテレータを元に、ペアタプルのイテレータを生成。
unzip
ペアタプルのイテレータを元に、二つのコレクションを生成。
partition
イテレータの各要素を条件判定、二つのコレクションを生成。
flatten
イテレータのイテレータを元に、平坦化したイテレータを生成。