C ++ unordered_map <string, ...> búsqueda sin construir string

Tengo un código C ++ que investiga una cadena GRANDE y coincide con muchas subcadenas. En la medida de lo posible, evito construir cadenas std ::, codificando subcadenas como esta:

char* buffer, size_t bufferSize

Sin embargo, en algún momento, me gustaría buscar una subcadena en una de estas:

std::unordered_map<std::string, Info> stringToInfo = {...

Entonces, para hacer eso, voy:

stringToInfo.find(std::string(buffer, bufferSize))

Eso construye una cadena std :: para el único propósito de la búsqueda.

Siento que hay una optimización que podría hacer aquí, al ... cambiar el tipo de clave de unordered_map a algún tipo de impostor de cadenas temporal, una clase como esta ...

class SubString
{
    char* buffer;
    size_t bufferSize;

    // ...
};

... que hace la misma lógica que std :: string para hacer hash y comparar, pero luego no desasigna su búfer cuando se destruye.

Entonces, mi pregunta es: ¿hay alguna manera de obtener las clases estándar para hacer esto, o escribo esta clase yo mismo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta