Строка itc->second.second = c_flags[i][j];
, выполняемая в цикле с itc от begin () до end (), действительно выполняет присваивание каждому значению карты. Если цель состояла в том, чтобы изменить только j-ое значение на карте, не было необходимости в цикле по всей карте:
for(size_t j = 0; j < bits; ++j)
{
std::cout << c_flags[i][j] << std::endl;
It_acq itc = acq_map.begin(); // itc points at the beginning
advance(itc, j); // itc points at the j'th element
itc->second.second = c_flags[i][j]; // the assignment
for(It_acq itc = acq_map.begin(); itc!= acq_map.end(); ++itc)
{
acq_pair it1 = itc->second;
// itc->second.second = c_flags[i][j]; // no assignment here
std::cout << itc->first << " : " << it1.first << " : " << it1.second << std::endl;
}
}
Если эта карта используется для индексированного доступа таким образом, возможно, стоит подумать о переключении на вектор.