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