クラスiteratorを用いてイテレータを作製してみよう
ソーラー「ではでは
先程のプログラムをご覧ください
#include <iostream>
#include <vector>//🌞ヘッダファイル<vector>をインクルードしています
using namespace std;
int main() {
vector<int> a{1,2,3};
return 0;
}
プログラムの実行結果
続行するには何かキーを押して下さい . . .
ソーラー「このプログラムでは
連続したメモリに
数値データ
1
2
3
が格納されています
これらの数値データを表示するのに
イテレータ
というものを用いてみましょう~」
マックス「イフリータ?
どっこかで聞いたような名前だが・・・?」
ソーラー「そちらのイフリータでなく
イテレータです
イテレータは
ポインタ変数のようなもので
クラスiteratorをもちいることにより生成されます」
マックス「イテレータ
なんか 新しい仲間の登場か」
ソーラー「そうですね
クラスiteratorをもちいて
イテレータ(オブジェクト)
itr
を作製することができます
イテレータはポインタ変数の役割を果たします
名前は
itrでなくても自由に設定することができます
vector<int> a{1,2,3};
を実行して連続したメモリに
数値データ
1
2
3
が格納されたとします
この
イテレータitrに
数値データ
1
が格納されているメモリのアドレスが代入されれば
イテレータに*(アスタリスク)演算子を用いた
*itr
は
数値データを
1
を
表すことになります
ですので
*itr
を用いて
1
をコマンドプロンプト画面に表示することができます
このとき
itr+1
itr+2
はそれぞれ
数値データ
2
が格納されているメモリのアドレス
数値データ
3
が格納されているメモリのアドレスが格納されることになるので
*(itr+1)
*(itr+2)
は
2
3
を表すことになり
*(itr+1)
*(itr+2)
を用いて
2
3
を
コマンドプロンプト画面に表示することができます
その時のプログラムはこちらです
👇
#include <iostream>
#include <vector>//🌞🌞ヘッダファイル<vector>をインクルードしています
using namespace std;
int main() {
vector<int> a{ 1,2,3 };
vector<int>::iterator itr = a.begin();
cout << *itr << "\n";
cout << *(itr+1) << "\n";
cout << *(itr+2 )<< "\n";
return 0;
}
プログラムの実行結果
1
2
3
マックス「な、なんだ
vector<int>::iterator itr = a.begin();
は?」
ソーラー「
vector<int>::iterator itr
を実行することにより
イテレータitrが生成されます
vector<int>型の オブジェクト宣言
vector<int> a{ 1,2,3 };
を実行したなら
イテレータitrを作製するには
vector<int> をiteratorに用いた
vector<int>::iterator itr
を実行する必要があります
vector<int>::を記述しなければ
vector<int>型の オブジェクト宣言
vector<int> a{ 1,2,3 };
を実行することにより
1
2
3
を格納している
連続したメモリ領域の先頭のメモリのアドレスを
生成されたイテレータitrに格納するようなことはできません」
マックス「なるほど
int型の変数のアドレスは
int*型のポインタ変数に格納されるんだったな
なんか
そんなかんじか
ところで
vector<int>::iterator itr = a.begin();
の
a.begin()
は
何を意味しているんだ
新しい人生がはじまるのか?」
おまけ
様々なクラステンプレートを用いて
メモリにデータを格納する方法があります
クラスiteretorを用いて
イテレータitrを作製して
メモリに格納されたデータにアクセスできるよう
クラスiteretorは
様々なクラステンプレートで
メンバクラスとして
設定されています
vector<int>::iterator itr
の
::
はスコープ解決演算子とよばれるもので
vector<int>::は
今から作製されるイテレータitrが
クラステンプレートvector<int>を用いて
メモリに格納されたデータを
とりあつかうイテレータであることをあらわすために付けられます
vector<int>::をiterator itrにくっつけることにより
イテレータitrがクラステンプレートvector<int>で用いられる
イテレータとなるわけです
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます