¿Qué beneficios obtengo de Apache C++ standard library que no obtengo de las implementaciones de STL que vienen con el compilador y las bibliotecas de Boost?¿Por qué debería usar Apache C++ Standard Library en lugar de cualquier otra implementación de STL junto con Boost?
Respuesta
El proyecto Apache C++ biblioteca estándar es una implementación completa de la norma ISO/IEC 14882 C++ estándar Biblioteca.
La más distintiva característica de esta implementación de la biblioteca estándar de C++ es su portabilidad a un gran número de compiladores de C++, sistemas operativos y hardware arquitecturas.
Parece que si valoras la portabilidad extrema esto es para ti. Si no lo hace, la mayoría de las personas adoptan por defecto la implementación predeterminada de su compilador, por lo que si alguna vez tiene problemas, la comunidad será más grande. Si no se encuentra con problemas de implementación, no veo por qué debería marcar una gran diferencia.
Normalmente me gusta esta opinión, pero me gusta la idea de tener una empresa que pueda pagar para solucionar problemas, mis desarrolladores (y yo) no somos lo suficientemente inteligentes (o no tenemos el tiempo) para bucear internos y corregir errores.
La biblioteca Apache C++ fue originalmente una biblioteca comercial de Rogue Wave. Afirman que están siguiendo muy de cerca el estándar C++ y están trabajando arduamente para garantizar la portabilidad en varios sistemas operativos y compiladores. La biblioteca de Rogue Wave afirma haber sido portada a más de 40 compiladores.
Una de las ventajas que stdxx
reclamaciones parece ser cierto para mí:
- Optimizado para compilaciones rápidas y extremadamente pequeño archivo ejecutable tamaños
En este trabajo, BS habla sobre una nueva idea aplicada en algunos compiladores de C++ llamada SCARY
. Lo leí por primera vez en one of his papers. De todos modos, esta característica permite reducir el tamaño de los ejecutables producidos en una gran cantidad (~1x - ~25x)
, y más rápido en (~1.2x - ~2.1x)
. En el primer artículo, dijo que Rogue Wave STL
apoya SCARY
, al menos en las implementaciones modernas:
La versión más reciente de Rogue Wave STL tiene contenedor independiente iteradores en su modo de producción, pero algunos de los contenedores estándar Los iteradores ' no son independientes en el modo de depuración . N2911 explica que estas dependencias no son realmente necesarias con fines de depuración y pueden eliminarse fácilmente .
lo tanto, si stdxx
se basa en Rogue Wave STL
, que podría tener esta idea en práctica ya.
stdxx se bifurcó en 2005; el documento SCARY es mucho más reciente. – MSalters
No estoy familiarizado con la biblioteca estándar de Apache C++, por lo que no estoy seguro de qué servicios tiene.Si encuentra que proporciona todo lo que necesita, entonces no hay mucha diferencia al usar eso o usar otra implementación de STL junto con Boost. Sin embargo, Boost proporciona mucho más que algunas características TR1 y pequeñas cosas como punteros inteligentes. También cuenta con:
- Lambdas/cierres
- plantilla y preprocesador metaprogramming
- Señales y aplicación ranuras/Observador/patrón Listener
- envoltorios de referencia
- Una gran cantidad de otras cosas al azar que no estás es probable encontrar en otra parte en una sola biblioteca
Todo depende de las instalaciones que necesita.
Desafortunadamente esta biblioteca ya no se admite a partir de julio de 2013. Ver el anuncio lista de correo: http://mail-archives.apache.org/mod_mbox/stdcxx-dev/201307.mbox/browser
Gracias por la actualización –
- 1. boost :: alternativa opcional en C++ Standard Library
- 2. ¿Por qué usar boost :: ice_or en lugar de || y boost :: ice_and en lugar de && en enable_if?
- 3. C equivalente de C++ STL
- 4. ¿Por qué debería usar git en lugar de svn?
- 5. ¿Por qué debería usar var en lugar de un tipo?
- 6. ¿por qué debería usar content_tag en lugar de html "normal"?
- 7. Boost C++ library install
- 8. ¿Por qué debería configurar una interfaz de complemento en C++ en lugar de c
- 9. ¿Por qué debería usar url.openStream en lugar de url.getContent?
- 10. ¿Por qué debería usar operator.itemgetter (x) en lugar de [x]?
- 11. JavaScript Standard Library for V8
- 12. ¿Por qué debería usar int en lugar de un byte o abreviar en C#
- 13. C++ - boost :: cualquier serialización
- 14. java.util.concurrent vs. Boost Threads library
- 15. C++ STL con jemalloc
- 16. ¿Por qué debería usar @properties?
- 17. ¿Por qué debería usar Flex?
- 18. ¿Por qué debería usar glBindAttribLocation?
- 19. ¿Por qué no es aconsejable usar attach() en R, y qué debería usar en su lugar?
- 20. contenedor stl con std :: unique_ptr's boost :: ptr_container
- 21. ¿Por qué usar C typedefs en lugar de #defines?
- 22. Cómo usar boost :: lambda junto con std :: find_if?
- 23. ¿Por qué debería usar MXML?
- 24. ¿Por qué debería usar Drools?
- 25. ¿Qt funciona bien con STL & Boost?
- 26. vectores Boost versus vectores STL
- 27. ¿Por qué no debería usar ID de estilo con CSS?
- 28. Actualización de Boost Serialization Library
- 29. ¿Por qué usar Glassfish en lugar de Apache? ¿Qué es fortalezas y debilidades?
- 30. C# Logging. ¿Qué debería usar?
puesto algunos antecedentes –
que se sugirió el uso de C de Apache ++ biblioteca estándar en mi proyecto, ya que es 'portátil' y también tiene un amplio conjunto de colecciones y muchas otras implementaciones de algoritmos. No quiero seguir ciegamente la sugerencia, por lo que busco el aporte de las personas que tienen mejores conocimientos y experiencia utilizando diferentes bibliotecas de plantillas. Gracias. –
Acerca de su parte de Boost: ¿está preguntando si debería utilizar la Biblioteca estándar de Apache C++ en lugar de Boost? O Boost en lugar de una implementación de STL – blwy10