La clase vstring
de GCC es una versátil clase de cadena, que se introdujo en la implementación libstdc++
de GCC 4.1.
Es compatible con std::basic_string
, con estos detalles adicionales: se proporcionan
- Dos clases de base:
- el predeterminado evita el recuento de referencias y está optimizado para cadenas cortas;
- la alternativa, todavía la usa (el recuento de referencias), mientras mejora en algunas áreas de bajo nivel (por ejemplo, alineación). Ver
vstring_fwd.h
para algunos typedefs útiles.
- Se han reescrito varios algoritmos (por ejemplo, reemplazar), se ha simplificado el código y se han agregado 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 Library Working Group Defect Report 431, con la opción 3 el aspecto de la implementación de un mejor soporte para la clase asignador para permitir un mejor intercambio y otras operaciones relacionadas con el asignador.
Los detalles básicos son de GCC 4.1's release notes, en la sección Biblioteca de tiempo de ejecución.
edición:
Parece que el propósito original de esta extensión era proporcionar una base para una implementación en C++ 11 std::string
. Paolo Carlini, colaborador de GCC/libstdC++, comenta en este GCC Bug Report que <ext/vstring.h>
contiene una versión experimental no contada del próximo std::string
. Comentarios de fecha 12 de abril de 2012:
Lo que tratamos de explicar es que este tipo de problema es bien conocido y, más o menos , afecta cualquier aplicación contado referencia ... Ese no es el caso cuando el recuento de referencias no se utiliza y de hecho se no ser utilizado (por el nuevo estándar de C++ 11) en una nueva implementación de std::string
cuales estamos mostrando actualmente como <ext/vstring.h>
...
El enlace que proporcionó menciona directamente en la parte superior * "Este archivo es una extensión de GNU a la Biblioteca estándar de C++." * Por supuesto, eso no responde completamente a su pregunta. –
Si la memoria sirve, es/fue una reimplementación experimental de 'std :: string' con la misma interfaz pero diferentes agallas. El archivo tiene fechas de copyright en 2005-2007 y nada desde entonces; recomendamos buscar en el archivo de la lista de correo ['libstdC++'] (http://gcc.gnu.org/ml/libstdc++/) en ese período de tiempo para las menciones. – zwol