はじめに
C++のイテレータは、配列や vector
、map
などのコンテナの要素を順番に処理するために使用されます。本記事では、イテレータの基本的な操作方法や応用的な使い方を詳しく解説していきます。
イテレータとは?
イテレータは、C++のコンテナ(vector
, map
, set
など)内の要素にアクセスするためのポインタのようなオブジェクトです。
イテレータの基本
コンテナ.begin()
コンテナ.end()
イテレータ++
*イテレータ
基本的なイテレータの使い方
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> a = {3, 1, 5, 6, 7, 2, 4};
auto itr1 = a.begin(); // 先頭要素を指す
itr1 = itr1 + 2; // 3番目の要素 (a[2]) を指す
auto itr2 = itr1 + 4; // 7番目の要素 (a[6]) を指す
cout << *itr1 << endl; // 5
cout << *itr2 << endl; // 4
}
出力結果
5
4
イテレータを使ったループ処理
イテレータを使って vector
の要素を順番に出力する方法を見てみましょう。
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<int> a = {1, 2, 3};
for (auto it = a.begin(); it != a.end(); it++) {
cout << *it << endl;
}
}
出力結果
1
2
3
イテレータの各種操作
イテレータの移動
advance(イテレータ, k); // k 個進める
prev(イテレータ, k); // k 個前のイテレータを取得
next(イテレータ, k); // k 個先のイテレータを取得
イテレータの指す要素のメンバにアクセス
#include <bits/stdc++.h>
using namespace std;
int main() {
vector<pair<int, int>> a = {{1, 4}, {2, 5}, {3, 6}};
auto itr = a.begin() + 1;
cout << itr->first << ", " << itr->second << endl;
}
出力結果
2, 5
イテレータの指す要素の削除
イテレータを使用して vector
の特定の要素を削除することもできます。
コンテナ.erase(イテレータ);
注意点
まとめ
C++のイテレータを活用して、より効率的で柔軟なプログラムを書いてみましょう!