[ブースト] BOOST_FOREACHトラバーサル操作

BOOST_FOREACHは簡単にSTLコンテナを横切ることができます。

唯一のヘッダファイル:

書式#include <ブースト/ foreach.hpp>

そして、トラバースコンテナのベクトル/リスト/設定/両端キュー/スタック/キュー似ています。

ベクター<int32_t> _V; 
BOOST_FOREACH(int32_t値、_V)
{ 
// ここでは、値にアクセスすることができます 
}

一方の要素は、のように書くこともでき、上記のコードのような参考文献、CONSTを、サポートしています。

ベクター<int32_t> _V; 

BOOST_FOREACH(int32_t値、_V)
{ 
// ここでは、変更することができる/アクセス値を 
}

元素の含有量が構造体等である場合、参照コピーを防止することができる~~

特別なビットマップ・アクセスのために、元素マップは、書き込む必要があるのstd ::ペア<T1、T2>、そうであるので。

マップ:: STD <int32_t、int32_t> _MAP; 
typedefのconstの STD ::地図<int32_t、int32_t> :: VALUE_TYPEのconst_pair; 
BOOST_FOREACH(const_pairノード、_MAP)
{ 
// ここにアクセスノード要素 
キー= int32_t ノード。最初; 
int32_t値 = node.second; 
}

BOOST_FOREACHの反復は逆BOOST_REVERSE_FOREACHで、ポジティブであります

また、スコープは、もはやなどのように削除するなど、イテレータ失敗した操作のいくつかを、行うことができます。

最後に、ループの中にC ++ 11について話:

C ++ 11サポート範囲ベースのforループ。これは、コードを大幅に節約することができ、非常に便利な機能です。次のコードは、簡単にベクトルの要素を横断することができ、それをプリントアウトします。

ベクター:: STD < 整数 > INT_VECとして; 
int_vec.push_back(1。); 
int_vec.push_back(2 );
 // INT_VECとして要素を変更するには、変数xがintとして&宣言することができる
ため(自動×:INT_VECとして)
{ 
    STD COUT :: << X << てendl; 
}

トラバースできるオブジェクトは、次のとおりです。

  • アレイ。(ポインタを含むません)
  • 定義は、(開始)及び()メソッド、およびイテレータがクラスオブジェクトを返すメソッドの戻りを終了します。(すべてのコンテナはSTLです)

しかし、キューとスタック横断中のstdのために、あるかのようにそれをサポートしていませんか?

参考記事:

https://www.cnblogs.com/h46incon/archive/2013/06/02/3113737.html

https://www.cnblogs.com/egmkang/archive/2011/05/14/2046205.html

おすすめ

転載: www.cnblogs.com/Swetchine/p/12015387.html