Я бы хотел перебрать std :: map с помощью BOOST_FOREACH и отредактировать значения. Я не могу это получить.с использованием BOOST_FOREACH с 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
Конечно, это ничего не меняет, потому что я не повторяю ссылки. Поэтому я заменить эту строку вместо того, чтобы (как в примере в буста документации):
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
]
Любые предложения?
Какой компилятор вы используете? Я пробовал ваш код на VS2008, и он работал правильно. Я протестировал hvint [ответ] (http://stackoverflow.com/questions/795443/using-boostforeach-with-stdmap/795482#795482), и он сработал. Я использую boost 1.36, если это имеет значение. –
вы, вероятно, забыли &? без этого, он копирует другую пару, и в дальнейшем это будет иметь значение. –