के साथ BOOST_FOREACH का उपयोग करके मैं BOOST_FOREACH का उपयोग करके std :: मानचित्र पर पुन: प्रयास करना चाहता हूं और मानों को संपादित करना चाहता हूं। मैं इसे काफी नहीं मिल सकता।stOS :: 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
बेशक यह कुछ भी नहीं बदलेगा क्योंकि मैं संदर्भ द्वारा पुनरावृत्ति नहीं कर रहा हूं। इसलिए मैं (के रूप में बढ़ावा डॉक्स में उदाहरण के प्रति) के बजाय इस लाइन स्थानापन्न:
BOOST_FOREACH(IdSizePair_t &i, mmap)
और मैं संकलक त्रुटि मिलती है:
error C2440: 'initializing' :
cannot convert from 'std::pair<_Ty1,_Ty2>' to 'IdSizePair_t &'
with
[
_Ty1=const int,
_Ty2=int
]
कोई सुझाव?
क्या संकलक आप उपयोग कर रहे हैं? मैंने वीएस -2008 पर अपना कोड आजमाया और यह सही तरीके से काम किया। मैंने Hvint के [उत्तर] का परीक्षण किया (http://stackoverflow.com/questions/795443/using-boostforeach-with-stdmap/795482#795482) भी और यह काम किया। यदि यह मायने रखता है, तो मैं बढ़ावा 1.36 का उपयोग कर रहा हूं। –
शायद आप भूल गए हैं? इसके बिना, यह दूसरी जोड़ी की प्रतिलिपि बनाता है, और स्थिरता तब कोई फर्क नहीं पड़ता। –