I'm looking for a good way to store the sounds that will be used in my engine.

I could store them in an array of DXSoundSamples, which is my class that handles loading sounds and creating the secondary buffers for them. Problem is that all sounds would have to be loaded into memory at startup. Benefit is that it would be easy to find which sample is to be played -> DXSound->Play(int sound_num).

Or I could store them as a linked list in memory and load them on demand. Good memory usage but to play a sound I would have to search the linked list, add the sound to the list, retrieve the id, play it, remove from list. Not good in real time.

Any ideas?