Хорошо, поскольку вы спрашиваете, что «проще всего», несмотря на два хороших ответа, возможно, вы имеете в виду «что легче всего читать» - отличный момент, поэтому давайте попробуем переписать:
void do_avg()
{
typedef std::map<int,hqs>::iterator hqs_map_it;
// Assign
for (hqs_map_it it = vals.begin(), end = vals.end(); it != end; ++it)
{
it->second = 0;
printf("%i: %f\n", it->first, it->second);
}
// Check
for (hqs_map_it it = vals.begin(), end = vals.end(); it != end; ++it)
{
printf("%i: %f\n", it->first, it->second);
}
}
Если вы действительно хотите использовать именованные переменные в цикле, используйте ссылки:
for (hqs_map_it it = vals.begin(), end = vals.end(); it != end; ++it)
{
const int & q = it->first;
hqs & val = it->second;
val.hs = 0; // now using the reference to update the map's value!
printf("%i: %f\n", q, val);
}