Ich würde gerne über eine STD :: Map mit BOOST_FOREACH iterieren und die Werte bearbeiten. Ich verstehe es nicht ganz.mit BOOST_FOREACH mit Std :: Map
typedef std::pair<int, int> IdSizePair_t;
std::map<int,int> mmap;
mmap[1] = 1;
mmap[2] = 2;
mmap[3] = 3;
BOOST_FOREACH(IdSizePair_t i, mmap)
i.second++;
// mmap should contain {2,3,4} here
Natürlich ändert das nichts, weil ich nicht per Referenz iteriere. So ersetzen ich diese Linie statt (gemäß dem Beispiel in der Boost-docs):
BOOST_FOREACH(IdSizePair_t &i, mmap)
und ich erhalte den Compiler-Fehler:
error C2440: 'initializing' :
cannot convert from 'std::pair<_Ty1,_Ty2>' to 'IdSizePair_t &'
with
[
_Ty1=const int,
_Ty2=int
]
Irgendwelche Vorschläge?
Welche Compiler verwenden Sie? Ich habe Ihren Code auf VS2008 versucht und es hat richtig funktioniert. Ich habe auch hvint's [Antwort] (http://stackoverflow.com/questions/795443/using-boostforeach-with-stdmap/795482#795482) getestet und es hat funktioniert. Ich benutze Boost 1.36, wenn das wichtig ist. –
hast du wahrscheinlich das & vergessen? ohne das kopiert es das andere Paar, und die Konstanz spielt dann keine Rolle. –