Мне было интересно, есть ли функция или что-нибудь, что позволяет вам получить доступ к каждому значению.
Есть несколько опций (и больше, как указано здесь), которые делают его одним вкладышем, но все это приводит к циклу, который может или не может последовать за вызовом функции.
1)
STL предоставляет std::for_each
2)
но простой цикл делает его более удобным с for ( auto& x: m ) { x.second.Do(); }
Полный пример:
struct X
{
int i;
void Do() { std::cout << "Do called" << i << std::endl; }
};
int main()
{
std::map<int, X> m;
m[1]=X{10};
m[3]=X{30};
m[4]=X{40};
std::for_each( m.begin(), m.end(), []( auto& x){ x.second.Do(); });
// looks nicer for me:
for ( auto& x: m ) { x.second.Do(); }
}
Внутренне все результаты в цикле, возможно, компилятор оптимизирует и развернет, если содержимое карты известно, а компилятор очень умен.