The char * -> std::string conversions involve memcopies. Do we really want to be copying all of the sample names on every single access? This does not seem efficient at all...