ホームページ  >  記事  >  バックエンド開発  >  C++ STL のイテレータ

C++ STL のイテレータ

WBOY
WBOYオリジナル
2023-08-21 20:52:431375ブラウズ

C STL (Standard Template Library) は、C プログラミング言語の標準ライブラリの 1 つであり、一連の標準データ構造とアルゴリズムが含まれています。 STL では、イテレータ (反復子) は STL コンテナ内を走査してアクセスするための非常に重要なツールです。

イテレータはポインタに似たオブジェクトで、コンテナ内の要素 (ベクトル、リスト、セット、マップなど) を指し、コンテナ内の要素を移動したりアクセスしたりできます。イテレータは STL で重要な役割を果たしており、コンテナを走査するためのツールであるだけでなく、並べ替え、検索、コピー、その他のアルゴリズムなどのアルゴリズムでも広く使用されています。

STL のイテレータは 5 つのタイプに分類できます:

  1. 入力イテレータ (入力イテレータ): コンテナ内の要素を走査するために使用されますが、走査できるのは 1 回だけです。変更することはできません。
  2. 出力反復子 (出力反復子): 要素をコンテナーに書き込むために使用され、一度だけ走査できます。
  3. Forward Iterator (Forward Iterator): コンテナ内を前方に走査し、複数回走査することができますが、ランダム アクセスを実行することはできません。
  4. 双方向反復子 (双方向反復子): 順方向および逆方向にトラバースできますが、ランダム アクセスは実行できません。
  5. ランダム アクセス イテレータ (ランダム アクセス イテレータ): ランダム アクセスと操作を実行でき、加算、減算、比較などのポインタのすべての操作を提供します。

STL では、イテレータには begin と end という 2 つの概念があります。 begin はコンテナの最初の要素を指し、end はコンテナの最後の要素を指します。また、コンテナの末尾の次の位置を返す end() 関数も提供されており、これはループのトラバーサルに便利です。さらに、STL は、ソート、検索、コピーなどの多数のアルゴリズムを提供しており、すべてイテレータに基づいて実装されています。

以下は、反復子を使用して走査するサンプル コードです。

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int> vec{ 1, 2, 3, 4, 5 };
    vector<int>::iterator it;
    for (it = vec.begin(); it != vec.end(); it++) {
        cout << *it << " ";
    }
    return 0;
}

上の例では、まずベクトル コンテナを作成し、反復子を使用してそれを走査します。 Vector::iterator はベクトル コンテナのイテレータ型で、ベクトル コンテナの開始位置は vec.begin() で取得され、終了位置は vec.end() で取得されます。 for ループを使用してコンテナ全体を走査し、*it 演算子を使用して対応する要素の値を取得して出力します。

つまり、イテレータは STL の非常に重要なツールの 1 つです。これにより、STL のコンテナーとアルゴリズムがより柔軟になり、拡張可能になります。初心者であっても、上級のプログラミング愛好家であっても、STL のデータ構造とアルゴリズムをより効果的に使用するには、イテレータの使用をマスターする必要があります。

以上がC++ STL のイテレータの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。