Directorio de artículos
Parte I Introducción
Sitio web oficial: https://cplusplus.com/reference/stl/
He escrito sobre los entresijos de STL antes , pero no lo he usado mucho más tarde. Este artículo registra brevemente cómo usar esta Biblioteca de plantillas estándar (Standard Template Library, STL). Un adaptador de contenedor es una plantilla de clase que encapsula un contenedor de secuencias y proporciona algunas funciones diferentes sobre la base de un contenedor de secuencias general. La razón por la que se llama clase de adaptador es que puede proporcionar diferentes funciones adaptando la interfaz existente del contenedor.
En el estándar C++, STL se organiza en 13 archivos de encabezado (7 estructuras de datos + 6 algoritmos), de la siguiente manera:
archivo principal | ilustrar | Observación |
---|---|---|
#include <vector> |
Defina vector una plantilla de secuencia, que es un tipo de matriz redimensionable, más segura y más flexible que las matrices ordinarias |
Estructuras de datos: contenedores básicos |
#include <deque> |
Defina deque plantillas de secuencia que admitan la inserción y eliminación eficientes al principio y al final |
Estructuras de datos: contenedores básicos |
#include <queue> |
Define un adaptador de secuencia para una estructura de datos de cola (primero en entrar, primero en salir) queue ypriority_queue |
Estructuras de datos: adaptadores de contenedores |
#include <stack> |
Define la pila del adaptador de secuencia para una estructura de datos de pila (último en entrar, primero en salir) | Estructuras de datos: adaptadores de contenedores |
#include <list> |
Define list una plantilla de secuencia, que es una lista enlazada de secuencias, a menudo insertando y eliminando elementos en posiciones arbitrarias |
Estructuras de datos: básico |
#include <set> |
set es un tipo de contenedor asociativo utilizado para almacenar valores únicos en orden ascendente. | Estructuras de datos: contenedores asociativos |
#include <map> |
map Es un tipo de contenedor asociativo que permite valores clave únicos y almacenados en orden ascendente. multimap El valor de la clave no es único, unordered_map está desordenado (o almacenado según el orden de inserción) |
Estructuras de datos: contenedores asociativos |
#include <algorithm> |
Proporciona un conjunto de funciones para algoritmos dados, que incluyen permutación, clasificación, fusión y búsqueda. | algoritmo |
#include <numeric> |
definir un conjunto de operaciones matemáticas generales sobre secuencias de números | algoritmo |
#include <functional> |
Define una serie de tipos de objetos de función y funciones que admiten objetos de función, que son operator() objetos arbitrarios que admiten el operador de llamada de función. |
algoritmo |
#include <iterator> |
Proporciona definiciones y soporte para iteradores. | algoritmo |
#include <memory> |
Defina asignadores de memoria estándar para contenedores, funciones de administración de memoria y auto_ptr clases de plantilla |
algoritmo |
#include <utility> |
Define operadores relacionales sobrecargados, simplifica la escritura de operadores relacionales, también define pair tipos |
algoritmo |
En primer lugar, las siete estructuras de datos anteriores se pueden dividir en tres categorías :
- Contenedor básico : o llamado contenedor secuencial, que incluye
vector, deque, list
;vector
el acceso a los datos es más eficiente, la inserción y la eliminación son más lentas; la inserción y la eliminación sonlist
más eficientes y el acceso es más lento;deque
las operaciones en ambos extremos de la cola doble son más rápidas y las operaciones en el medio son más lentas. - Adaptador de contenedor : basado en el contenedor básico, algo así como el contenedor básico es un adaptador. Por ejemplo,
stack
la pila se basa internamente en lavector
implementación básica. Esvector
algo similar al adaptador de contenedor; esstack, queue, priority_queue
como un adaptador de contenedor. - Contenedor asociativo : los elementos del contenedor asociativo se almacenan y se accede a ellos mediante palabras clave, mientras que los elementos del contenedor secuencial se almacenan y se accede a ellos en orden según sus posiciones en el contenedor. Los contenedores asociativos
<key,value>
almacenan pares clave-valor ymap, multimap, set, multiset
son todos contenedores asociativos.
pd: Ahora que pienso en el curso de computación "Estructura de datos y algoritmos" que tomé cuando era estudiante, no es de extrañar que surgiera el nombre.
Además, como se especifica en la biblioteca estándar de C++, todos los archivos de encabezado estándar ya no tienen extensiones. Sin embargo, para compatibilidad con versiones anteriores, algunas versiones de STL almacenan dos archivos con extensión ( <vector.h>
) y sin extensión ( <vector>
) al mismo tiempo, y se recomienda usar el archivo de encabezado sin extensión.
De hecho, anteriormente, C++
la función de biblioteca estándar se definió en el espacio global ( namespace
) y se declaró en *.h
el archivo de encabezado; pero para C
distinguirlo y usar el espacio de nombres correctamente, C++
el estándar estipula que el archivo de encabezado no usa un sufijo .h
. Por lo tanto, cuando se usa <iostream.h>
, es equivalente a C
llamar a la función de biblioteca en, usando el espacio de nombres global, que es la C++
implementación inicial; cuando se usa <iostream>
, el archivo de encabezado no define el espacio de nombres global y debe usarse namespace std
.
El párrafo anterior significa que al usar estas bibliotecas estándar, además de agregar archivos de encabezado, también debe:
using namespace std;
Introducción detallada de la Parte II
estructura de datos
- Stack stack : LIFO, último en entrar, primero en salir; una pila de platos colocados en una mesa de comedor.
- Cola cola : FIFO, primero en entrar, primero en salir; personas que hacen cola para hacer ácido nucleico
- Deque de cola bidireccional : la operación en ambos extremos es rápida y la operación en el medio es lenta.
- Vector de matriz de longitud variable : acceso eficiente, inserción y eliminación lentas
- Mapa de contenedor asociativo : hash hash, correspondencia clave-valor
- Conjunto de colección : los elementos son únicos y ordenados
- Lista lista : inserción y eliminación rápidas, acceso lento
- Para la conversión entre diferentes contenedores, consulte: conversión de tipo de datos
algoritmo