Bonjour à tous
Je code actuellement un SoundManager avec la lib FMOD et j'aurai besoin de votre avis. Ma classe SoundManager, de type singleton, possède en propriété privée un conteneur map pour la gestion des sons :
Donc ma classe possède différentes méthodes pour gérer les sons
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 typedef std::map<const std::string&, FSOUND_STREAM*> m_StreamMap; //Conteneur des sons m_StreamMap m_Stream; //Itérateur pour le parcours du conteneur m_StreamMap::iterator m_StreamIter;
Donc comme vous pouvez le voir l'utilisateur enregistre les sons et les appelle grâce à un nom de son, comme par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void RegisterSound(const std::string &strSoundPath, const std::string strName); void PlaySound(const std::string &strName); ...
L'utilisateur peut donc stocker autant de fichier sons qu'il veut (en étant quand même raisonnable^^)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 pSoundManager->RegisterSound("Data/Sound/Stream/Hold On.mp3", "Hold On"); pSoundManager->PlaySound("Hold On");
Voici donc mes 2 questions :
- est-il judicieux d'utiliser un conteneur map pour la gestion des son ou me conseillez-vous un autre type de conteneur ?
- est ce que rechercher un élément d'un conteneur map grâce à une clé de type std::string est efficace ou au contraire est-elle source de baisse de performance ? (j'ai lui sur un forum que pour accéder aux éléments d'un conteneur map par une clé de type std::string, on doit comparer chaque lettre de la chaine passée en paramètre avec celle du conteneur) Ainsi dans l'exemple précédent :
le programme devra comparer chaque lettre de "Hold On" avec la clé cible pour lire le son
Code : Sélectionner tout - Visualiser dans une fenêtre à part pSoundManager->PlaySound("Hol On");
Voila j'espère avoir été assez clair et précis.
Merci d'avance![]()
Partager