In C (with gcc), I used to have some data structures that were an array with some extra information:
struct song {
    uint tempo;
    uint key;
    note play[0]; // or play[] depending on compiler flavour
};
Iirc, that's dubbed a "flexible array" (http://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html#Zero-Length) 
I could then allocate a song of N notes with malloc(sizeof(song)+N*sizeof(note)) at run-time.
To what extent is that supported in g++, if I don't intend to use vectors this time, nor to introduce a useless note* pointer in song ?
 
     
     
    