Sein Anwendungsfall ist doch, dass er den Bezeichner eines States (der wohl einmalig unter allen States ist) hat und anhand dessen den State finden muss. Da bietet sich eine Datenstruktur, die die Daten in Form von Schlüssel-Wert-Paaren speichert an. Warum sollte dann dennoch eine Datenstruktur empfohlen wird, bei der die Elemente nur anhand ihrer Position in der Datenstruktur abgerufen werden können, kann ich nicht ganz nachvollziehen. (Ich bin kein C++ Programmierer, weshalb mir keine Besonderheiten des Typs std::map im Gegensatz zu vergleichbaren Strukturen anderer Sprachen bekannt sind.)
Würde kein Assoziatives Array verwendet werden, müsste bei jedem Abruf eines States potentiell die gesamte Liste (im Optimalfall nur das erste Element) geprüft werden, ob es der gewünschte ist.
Was meinst du mit "wenn man keine doppelten Strings hätte"?
Einen State an einem Enumerationswert zu erkennen, statt Strings zu verwenden, ist grundsätzlich keine unsinnige Idee, allerdings bringt das den Nachteil mit sich, dass für jeden evtl. hinzu kommenden State die Enumeration angepasst werden muss. wird der State Manager (wie im Wiki als Beispiel verwendet) für die Zustände des Spiels (oder allgemeiner: nur für eine einzige Sache) verwendet, mag das ja noch halbwegs in Ordnung sein, soll der Statemanager aber ganz allgemein gehalten sein und auch durch eine KI verwendet werden können, kann man die Enumeration wieder vergessen.