una slideshare que librerias libreria funciones fuente estandar codigo biblioteca c++

slideshare - ¿Es reemplazable la biblioteca estándar de C++?



librerias c++ slideshare (5)

¿La biblioteca estándar de C ++ está vinculada al compilador o se puede proporcionar una implementación diferente?

Me pregunto sobre esto principalmente porque parece que la relación entre la palabra clave typeid y std::type_info dificulta. Las palabras clave de typeid dependen de la existencia de std::type_info , que yo consideraría una dependencia en la dirección equivocada. Y no tengo idea de cómo una implementación personalizada debe implementar el type_info::name() .

Mis preguntas son:

  • ¿Es la biblioteca estándar reemplazable?
  • Si es así, entonces, ¿cómo se implementa std::type_info


Grandes partes de la biblioteca son independientes del compilador, como contenedores y algoritmos.

Otras partes están muy ligadas a un compilador específico, como ha encontrado: type_info donde la biblioteca documenta lo que hace el compilador en lugar de prescribirlo.

Otros ejemplos similares pueden ser bad_exception, std :: size_t, y características de C ++ 11 como type_traits, atomics, y std :: initializer_list, que todos necesitan soporte del compilador. La biblioteca debe coincidir estrechamente con lo que realmente hace un compilador específico.

Es posible escribir una biblioteca que funcione con varios compiladores, pero no sin sintonizar un código de bajo nivel para cada compilador específico. Las bibliotecas mencionadas en otros lugares hacen exactamente eso.


Sí, STL no está enlazado con el compilador, aunque la compilación diferente tiene su implementación STL predeterminada. Por lo general, puede cambiar la implementación de STL modificando la configuración del Proyecto.

Por ejemplo, en vS2008, puedes hacer

Herramientas-> Opciones-> Proyecto y soluciones -> Directrices VC ++ -> Incluir campos, agregar una implementación diferente (por ejemplo, STL PORT), luego mover esta línea a la parte superior (por encima de la implementación predeterminada), luego la tiene.


Sí, hay una variedad de ''STLs'':

  • Implementación original de STL por Stepanov y Lee. 1994, Hewlett-Packard. Ya no se mantiene.
  • SGI STL, basado en la implementación original de Stepanov & Lee. 1997, Silicon Graphics. Ya no se mantiene.
  • libstdc ++ de gnu (era parte de libg ++)
  • libc ++ de clang
  • STLPort, basado en SGI STL
  • Biblioteca estándar de Rogue Wave (HP, SGI, SunSoft, Siemens-Nixdorf)
  • Biblioteca Dinkum STL de PJ Plauger

Editar:

Dado que aparentemente se trata de la biblioteca estándar de C ++ , también existen algunas alternativas:


Un ejemplo más de una STL alternativa, sacrificando un cierto cumplimiento de estándares por velocidad: EASTL (por Electronic Arts) https://github.com/paulhodge/EASTL