BOOST_FOREACH
boost1.34.1から加わったBOOST_FOREACH
std::for_eachよりも自然に記述できて大変便利なのでstdafx.hに
#include <boost/foreach.hpp> #define foreach BOOST_FOREACH
として愛用中。
で、stlのmapをforeachでまわそうとして
using namespace std; map<string,int> Map; Map.insert( pair<string,int>("XBOX360", 256) ); Map.insert( pair<string,int>("PS3", 512) ); Map.insert( pair<string,int>("DreamCast", 1024) ); foreach (pair<string,int> p, Map) { printf("%sの戦闘力は%d!", p.first, p.second); }
とかするとコンパイルエラーに
調べてみるとBOOST_FOREACHはマクロだからうんたらかんたら
http://miyano.s53.xrea.com/cgi-bin/sb/
なるほど、なるほど。
pair<string,int> p; foreach (p, Map) { printf("%sの戦闘力は%d!\n", p.first, p.second); }
とするか
typedef pair<string,int> P; foreach (P p, Map) { printf("%sの戦闘力は%d!", p.first, p.second); }
としないと駄目だったんだ。