To answer your question of when it might be used.
For example, in my game there is a function called "TriggerAction"
This function is called very often, it does everything from create sets of enemies to change the background to start and stop the game.
Every time "TriggerAction" is called it looks up a string in an array table. The array table is one of many called "Level 1/2/3" etc and each is just a list of things to do to make a level.
so it will be like Level 1 array
"Set Background"
"Create Player"
"Create Enemies"
and so on.
the "TriggerAction" function will go through the array list one by one.
each of these strings in the array is actually the name of another function.
And when the "TriggerAction" function is triggered, it in turn, calls a Function with the name of the "string" it finds in the array table at that time.
This is how levels get made in my game.
This is maybe a simple way of using it but you can now see that the String to call can be made up from any number of combinations of other strings to form the name of the functions to be called.
So one single function can run a set of events to determine what other function should be called from a list of functions based on the function map.
ok im starting to confuse my self now so I will stop. just wanted to try to answer your original question.