2010-03-25 17 views
8

He estado programando C++ durante aproximadamente un año y cuando miro veo muchas referencias a STL.¿Cuál es el punto de STL?

¿Puede alguien decirme qué hace?

y las ventajas y desventajas de la misma?

también ¿qué me da a través de las borlands VCL o MFC?

gracias

+17

Hay muchas posibilidades de que haya estado programando C durante un año y descubra C++. En serio, C++ sin STL está paralizado. – Thorsten79

+1

@ Thorsten79: O, si realmente no sabe qué es el STL, puede estar utilizando clases de contenedor, algoritmos e iteradores como parte de la biblioteca estándar. El STL propiamente dicho fue una biblioteca de plantillas desarrollada poco antes de que se estandarizara C++, y simplemente se absorbió en la biblioteca estándar. –

+0

@Jonathan D, VCL y MFC son en su mayoría marcos de GUI. STL es una colección de estructuras de datos. –

Respuesta

23

Es biblioteca estándar de C++ que proporciona todo tipo de contenedores de gran utilidad, cuerdas, algoritmos para manipularlos con escala, etc.

El término 'STL' es anticuado en mi humilde opinión, lo que solía ser el STL ha convertido en una gran parte de la biblioteca estándar para C++.

Si está realizando un desarrollo serio de C++, deberá familiarizarse con esta biblioteca y, preferiblemente, con la biblioteca boost. Si no lo está usando ya, probablemente esté trabajando en el nivel incorrecto de abstracción o se está limitando a un subconjunto pequeño de C++.

+0

¿qué me da sobre borland VCL o microsoft MFC? –

+1

@Jonathan D: portabilidad, del código que escribe y también de usted y sus habilidades. – Teddy

+11

Jonathan D: la capacidad de obtener un trabajo en C++. Afirmar que sabes C++ sin la capacidad de usar el STL te será rechazado en el primer nivel de cualquier entrevista de trabajo. –

0

El STL tiene Iterators. Claro, las colecciones y cosas son útiles, pero los iteradores de poder son gigantescos y, en mi humilde opinión, hacen que el resto sea pálido en comparación.

1

"ventajas y desventajas" en comparación con qué? ¿Escribir todo ese código usted mismo? ¿No es obvio? Tiene grandes colecciones y herramientas para trabajar con ellos

2

¡Proporciona herramientas útiles comunes para el programador! Iteradores, algoritmos, etc. ¿Por qué reinventar la rueda?

0

Wikipedia tiene una buena visión general: http://en.wikipedia.org/wiki/Standard_Template_Library

El STL fija una gran deficiencia de C++ - la falta de un tipo de cadena estándar. Esto ha causado innumerables dolores de cabeza ya que ha habido miles de implementaciones de cadenas que no funcionan bien juntas.

+0

El tipo de cadena en la Biblioteca estándar nunca formó parte del STL, o al menos del STL diseñado por Stepanov y Lee. –

+0

@Neil Tienes razón. Es parte de la biblioteca estándar de C++ (http://en.wikipedia.org/wiki/C%2B%2B_standard_library), no de la STL (http://en.wikipedia.org/wiki/Standard_Template_Library). pero creo que mucha gente dice "STL" cuando quieren decir "la biblioteca estándar de C++". (El hecho de que son muchos no los hace correctos, por supuesto.) –

+0

Aún así, todavía se encuentran muchas bibliotecas de cadenas en el código C++. ¿Recuerda que RogueWave, CString + todos solían pensar que podían hacerlo mejor? Sin mencionar que el recuento de referencias en std :: string no era seguro para subprocesos en muchas implementaciones. –

0

Es sinónimo de biblioteca de plantillas estándar

Se trata de un conjunto de funciones y clases que están allí para guardar un montón de trabajo.

Están diseñados para usar plantillas, que es donde define una función, pero sin definir en qué tipo de datos funcionará.

por ejemplo, el vector más o menos le permite tener matrices dinámicas. cuando creas una instancia de ella, dices para qué tipo quieres que funcione. Esto incluso puede ser su propio tipo de datos (clase).

Es algo difícil de considerar, pero es muy poderoso y puede ahorrarle mucho tiempo.

¡Obtenga la lectura ahora! Quieres arrepentirte.

3

El STL es la Biblioteca de plantillas estándar. Al igual que cualquier biblioteca, es una colección de códigos que le facilita la vida al proporcionar un código robusto y bien probado para que pueda volver a utilizar.

  1. Necesidad de una colección (mapa, lista, vectores, etc) que están en el STL
  2. necesidad de operar en una colección (for_each, copiar, transformar, etc,) que están en el STL
  3. Necesita hacer E/S, hay clases para eso.

Ventajas

1, usted no tiene que volver a implementar contenedores estándar (CUS que lo hagas mal de todos modos)

Leer este book de Nicolai M.Josuttis para aprender más acerca el STL, es el mejor libro de referencia de STL que hay.

0

Le da otro acrónimo para lanzar en cócteles.

En serio, consulte los documentos de introducción que comienzan, p. con el Wikipedia article on STL.

+3

Los programadores no van a cócteles. Van a fiestas de LAN. –

4

STL significa Standard Template Library. Esta fue una biblioteca diseñada principalmente por Stepanov y Lee, que luego fue adoptada como parte de la biblioteca estándar de C++. El término se está convirtiendo poco a poco sin sentido, sino que abarca estas partes de la biblioteca estándar:

  • contenedores (vectores, mapas, etc.)
  • iteradores
  • algoritmos

Si se llama a sí mismo un C++ programador, debe estar familiarizado con todos estos conceptos y con la implementación de la Biblioteca estándar.

+0

Se rumorea que STL en realidad significa "Stepanov y Lee!" (El rumor * lo tuvo, de todos modos ...) –