memomemo

asしかやった事ない私がつまずいたとこメモです。なんか間違ってたらコメントください。

イテレータ

C++数値の3桁区切り - memomemo
のなかのイテレータ部分ですー

                            • -

std::vector::reverse_iterator
リバースイテレータなるもの。
まず イテレーターって? こちらから引用

  • 配列やリストのようにデータがいくつか連なっているもの(格納庫)に対して、どの格納庫に対してもすべて同じ方法で、順番にアクセスする方法
  • イテレータはポインタのように扱えるように設計されてる

"reverse_iterator" はreverseだからi++で逆順にアクセスできる。
iteratorの種類↓

input_iterator 前方に移動しながら値を読むことができるイテレータ。インクリメント(ポインタを前方に進める)、比較、参照はずしができる
output_iterator 前方に移動しながら値を書き込むことができるイテレータ。インクリメントと参照はずしができる
forward_iterator 前方に移動しながら値の読み書きができる。これはinput_iteratorとoutput_iteratorを合体させ、値書き込み機能を追加したものである
bidirectional_iterator 前方、後方への移動、値の読み書きができるイテレータ。これはforward_iteratorに似ているが、さらにデクリメント(ポインタを後方に進める)ようにしたものである
random_iterator 値の読み書きとランダムアクセスが可能なポインタ。一番強力なポインタである。これはbidirectional_iteratorにポインタ演算機能とポインタ比較機能を追加したものである
reverse_iterator random_iteratorやbidirectional_iteratorのような、後方に進むことができるイテレータである


配列.rbegin()
配列.rend()

配列のイテレーターを取得するやつ

  • 逆順の先頭を取得する→ rbegin
  • 逆順の末尾(逆順で見たときの最後の要素の次)を取得する→ rend
  • 先頭の取得する→ begin
  • 最後の要素を取得する→ end


ふむふむ