C++_ iterator および distance のメモ

イテレータがよく分からなかったので Debug で中身を見ただけ。

 

※ #include <vector> 必要。

std::vector<int> x;
x.push_back(7);
x.push_back(8);
x.push_back(1);
x.push_back(2);


std::vector<int>::iterator iter = std::max_element(x.begin(), x.end());
    //中身は { 8 }

int piyo = *std::max_element(x.begin(), x.end());
    //中身は { 8 }
    // ポインタが指し示している値を取得。

size_t index = std::distance(x.begin(), iter);
    //中身は { 1 }

std::vector<int>::iterator hoge = x.begin();
    //中身は { 7 }

std::vector<int>::iterator fuga = x.end();
    //中身は { -33686019 }

size_t all = std::distance(x.begin(), x.end());
    //中身は { 4 }


std::vector<int>::iterator は、Debug で表示された階層を辿ると
[ptr] 0x0000HogeFugaPioyo {n} とあった。故に、
実際取得したものはポインタのようなものだが、加工して要素を示したものかと。
[未加工ビュー] の中に色々 Vector_const ……などなど入っていたし。


end 関数は、最後の要素の「次の」要素のイテレータを返す。

 

こちらから。
https://bituse.info/cp/10
https://msdn.microsoft.com/ja-jp/library/790seysf.aspx
http://www.isc.meiji.ac.jp/~re00079/EX2.2011/20110518.html
http://pg-kura.hatenablog.com/entry/20120611/1339376977
https://9cguide.appspot.com/15-05.html
https://www.sejuku.net/blog/25094

 

以上。

ギモン

アドレスを扱う為の変数をポインタ変数という。
ポインタ変数にはポインタが格納される。
ポインタ = アドレス ( 16進数 ) でいい?前調べてた。ポインタはアドレスの先頭バイト。