Q:

Initialization of objects in a vector

Simple yes/no question (I think).  If I declare the following at file scope:
struct SoundTouchExt
{
    SoundTouch sTouch;
    int channels;
    int sampleRate;
    float tempoChange;
    int pitchSemi;
    int bytesPerSample;
};

const int MAX_TRACKS = 16;

vector<SoundTouchExt> sProcessors(MAX_TRACKS);

with SoundTouch being a class with a public default constructor, should I get a valid object when I do this in a function:
SoundTouchExt& soundTouch = sProcessors.at(0);
SoundTouch& sTouch = soundTouch.sTouch;

I am expecting sTouch is a SoundTouch object constructed with the default constructor.  Is there a hidden gotcha that I could be missing?  I will go into more detail if needed. 

A:

Your expectation is correct.  You have 16 default-constructed instances of SoundTouchExt (each containing a default-constructed instance of SoundTouch). 
Note that keeping the SoundTouchExt reference requires care, since modifying the vector in certain ways (e.g. adding an element to it) could invalidate the reference.