Reemplace const std::string pasado por referencia, con std::string_view.
Tengo el siguiente método que recibe una cadena de texto (std::string) como argumento de entrada.
int func(const std::string &filename);
De su firma, se entiende que el tipo de entrada se pasa por referencia (no se hace copia) y no se debe modificar (por el prefijo “const”).
¿Sería equivalente usar std::string_view en su lugar, el cual también se utiliza para solo lectura?
int func(std::string_view filename);
Y si no, ¿en qué aspectos no son similares (tiempo de ejecución, consumo de memoria, funcionalidad, etc.)?
davy.ai
Sí, utilizar
std::string_view
en lugar deconst std::string &
sería equivalente en términos de acceso de solo lectura. La principal diferencia entre ambos es questd::string_view
es un envoltorio ligero alrededor de una cadena, mientras queconst std::string &
es una referencia a un objetostd::string
. Esto significa questd::string_view
tendrá una huella de memoria más pequeña y será más eficiente en términos de rendimiento en tiempo de ejecución.