Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ イテレータとは何か | イテレータの基礎
C++ STLイテレータ

bookイテレータとは何か

メニューを表示するにはスワイプしてください

Note
定義

イテレータは、コンテナ要素の走査を可能にするオブジェクトであり、一般化されたポインタのようなアクセスを提供します。イテレータはコンテナの内部構造を抽象化し、その要素を体系的に移動できるようにします。

Standard Template Library(STL)において、イテレータはアルゴリズムとコンテナ実装を分離する抽象化として機能します。インデックスや生ポインタを使う代わりに、イテレータは異なるコンテナ型に対して統一的な要素アクセス方法を提供します。

この分離により、探索、ソート、コピーなどの同じアルゴリズムを、std::vectorstd::liststd::setなどのコンテナで変更せずに利用できます。走査とアクセスを抽象化することで、イテレータは柔軟性を高め、コードの再利用性を促進し、保守性を向上させます。

main.cpp

main.cpp

copy
12345678910111213141516
#include <iostream> #include <vector> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; // Declare an iterator for std::vector<int> std::vector<int>::iterator it; // Use the iterator to traverse the vector for (it = numbers.begin(); it != numbers.end(); ++it) std::cout << *it << " "; std::cout << std::endl; }

このプログラムでは、まず std::vector<int> 型の numbers を宣言します。ベクターを走査するために、it 型のイテレータ std::vector<int>::iterator を宣言します。イテレータは numbers.begin() で初期化され、これは最初の要素を指します。ループは itnumbers.end()(最後の要素の次)と等しくなるまで続きます。ループ内では、*it でイテレータが指す値にアクセスし、++it で次の要素へ進みます。このパターンにより、インデックスを使わずにベクター内の各要素を順番に訪れることができます。

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> #include <list> int main() { std::list<std::string> words = {"hello", "world", "C++", "STL"}; // Declare an iterator for std::list<std::string> std::list<std::string>::iterator it; // Use the iterator to traverse the list for (it = words.begin(); it != words.end(); ++it) std::cout << *it << " "; std::cout << std::endl; }

イテレータを使用することで、異なるSTLコンテナを統一的に走査可能。std::vectorstd::list のように内部構造が異なっていても、同じループが利用できます。この柔軟性により、汎用的で再利用可能なコードとなり、保守性も向上します。

Note
注記

イテレータは、STLアルゴリズムをコンテナ非依存にするための重要な要素。begin()end() を提供する任意のコンテナはSTLアルゴリズムで利用でき、幅広いデータ構造に同じロジックを適用可能。

question mark

次のうち、STLにおけるイテレータの主な目的として最も適切なものはどれですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  2
some-alt