c++ - ejecutar - ¿Cuál es la "vstring" de GCC?
parametros del compilador gcc (1)
Leí un informe de errores de GCC y la gente hablaba de "vstring". Al buscar en la WEB, me di cuenta de que http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/vstring_8h.html .
¿Puede alguien dar más detalles sobre para qué sirve y para qué sirve? ¿Por qué usarlo en lugar de std :: string?
La vstring
de GCC es una clase de cadena versátil, que se introdujo en la implementación libstdc++
GCC 4.1.
Es compatible con std::basic_string
, con estos detalles adicionales:
- Se proporcionan dos clases base:
- el predeterminado evita el conteo de referencias y está optimizado para cadenas cortas;
- el alternativo, todavía lo usa (conteo de referencia, eso es) mientras mejora en algunas áreas de bajo nivel (por ejemplo, alineamiento). Ver
vstring_fwd.h
para algunosvstring_fwd.h
útiles.
- Se han reescrito varios algoritmos (por ejemplo, reemplazar), se simplificó el código y se agregaron optimizaciones simples.
- La opción 3 de DR 431 se implementa para ambas bases disponibles, mejorando así el soporte para asignadores con estado.
DR431 es el Informe de defectos 431 del Grupo de trabajo de bibliotecas , con la opción 3 buscando implementar mejor soporte de asignador para la clase para permitir un mejor intercambio y otras operaciones relacionadas con el asignador.
Los detalles básicos provienen de las notas de la versión de GCC 4.1 , en la sección Biblioteca de tiempo de ejecución.
editar:
Parece que el propósito original de esta extensión era proporcionar una base para la implementación de C ++ 11 std::string
. Paolo Carlini, colaborador de GCC / libstdc ++, comenta en este Informe de <ext/vstring.h>
GCC que <ext/vstring.h>
contiene una versión experimental contada que no es de referencia de la siguiente std::string
. Comentario fechado el 12 de abril de 2012:
Lo que intentamos explicar es que este tipo de problema es bien conocido y, más o menos, afecta a cualquier implementación de referencia contada ... Ese no es el caso cuando no se utiliza el recuento de referencias y, de hecho, no se utilizará (según el nuevo C ++ 11 Standard) en una nueva implementación de
std::string
que actualmente mostramos como<ext/vstring.h>
...