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?