ホームページ  >  記事  >  php教程  >  C++ STL 標準コンテナでのイテレータの使用

C++ STL 標準コンテナでのイテレータの使用

高洛峰
高洛峰オリジナル
2016-12-13 17:33:521227ブラウズ

C++ STL のほとんどの標準コンテナは Iterator を提供します。 priority_queue などの一部のコンテナには、意味的にコンテナ内の要素の任意の走査が許可されないため、Iterator がありません。

23 の古典的なデザイン パターンの中に反復子パターンがあり、Java コレクション フレームワークもこのパターンを実装しています:

Java コード

package java.util;  
  
  
public interface Iterator<E> {  
  
    boolean hasNext();  
  
    E next();  
  
  
    void remove();  
}

C++ の反復子は Java より柔軟で、主に以下に反映されています:

1.java のみ Aフロントツーバックイテレータに加えて、C++ は次のようなバックツーバックイテレータも提供します。イテレータに加えて、C++ には const_iterator も用意されています。これはコレクション内のデータを読み取ることのみができますが、その値を変更することはできません。

3. Java のイテレータは 1 ステップでのみインクリメントできるようですが、C++ のイテレータは次のようになります。デバイスは、+n、-n などの算術演算を実装することもできます。これは、特定の要素をランダムに読み取る必要があるシナリオでは非常に便利ですが、算術演算をサポートしているのはベクトルの反復子だけのようです。つまり、前の例の反復子 it は、it = it+n などの演算を実行できません。これは覚えておくことが重要です。

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