Я бы хотел перебрать std :: map с помощью BOOST_FOREACH и отредактировать значения. Я не могу понять это.
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):
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
]
Есть предложения?