¿Desde dónde debo estudiar un tema STL de C ++?

Por desgracia, la STL ya no existe, lo que existe es la Biblioteca estándar, una parte de la cual trata con contenedores en C ++ a partir de 2018.

Los contenedores en la biblioteca estándar se pueden clasificar en 3 categorías amplias

  1. Contenedores de secuencia.
  2. Contenedores asociativos – Pueden ser ordenados o desordenados.

Luego vienen los iteradores para estos contenedores: pueden ser secuenciales, aleatorios, bidireccionales o unidireccionales, constantes o mutables (es decir, si los datos a los que apuntan pueden modificarse o no).

Y finalmente viene la parte de algoritmos que acepta los iteradores y trabaja en ellos.

Todos los contenedores son de naturaleza genérica (clases de plantilla) con parámetros de tipo para la personalización, es decir, los contenedores de secuencia también se pueden personalizar con su propio asignador personalizado. Del mismo modo, los contenedores asociativos tienen parámetros de plantilla para la personalización. Además, el tipo de elemento especificado a menudo tiene ciertas restricciones impuestas para algunos contenedores, es decir, el tipo de clave std::map debe tener un ordenamiento parcial parcial, es decir, una especialización std::less u operator< definido para el tipo o pasar un parámetro de plantilla apropiado. De manera similar, para std::unordered_map , el tipo de clave debe ser hashable e igualdad comparable, es decir, la especialización std::hash o el parámetro de plantilla personalizada junto con el operator== o std::equal specialization.

Las operaciones no constantes en estos contenedores pueden o no invalidar los iteradores.

Los contenedores asociativos ordenados y desordenados a menudo surgen. Normalmente, lo que la gente llama hashmaps es a menudo std::unordered_map . El std::map ordenado internamente a menudo se implementa como un árbol rojo-negro. De manera similar, si solo desea una colección iterable de elementos únicos sin ningún orden, std::unordered_set es la opción más apropiada.

Y de manera similar, para los algoritmos, cada algoritmo requiere rasgos específicos para los iteradores y, a veces, los datos a los que apuntan también, es decir, std::sort requiere un iterador de acceso aleatorio que también es intercambiable.

También te sugiero que hagas esto: Conceptos de la biblioteca

puedes seguir estos enlaces

1) Encienda C ++ con la biblioteca de plantillas estándar: Parte 1

2) Encienda C ++ con la biblioteca de plantillas estándar: Parte 2

3) Resumen del artículo Topcoder STL – Codeforces

4) Contenedores – Referencia C ++

5) Biblioteca de plantillas estándar – Akash Sharma

Guía del programador de la biblioteca de plantillas estándar

Explora esta página.