Taquigrafía de uso de la biblioteca de plantillas estándar C++ STL

Parte I Introducción

inserte la descripción de la imagen aquí

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 vectoruna 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 dequeplantillas 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) queueypriority_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 listuna 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> mapEs un tipo de contenedor asociativo que permite valores clave únicos y almacenados en orden ascendente. multimapEl valor de la clave no es único, unordered_mapestá 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_ptrclases de plantilla algoritmo
#include <utility> Define operadores relacionales sobrecargados, simplifica la escritura de operadores relacionales, también define pairtipos 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; vectorel 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 son listmás eficientes y el acceso es más lento; dequelas 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, stackla pila se basa internamente en la vectorimplementación básica. Es vectoralgo similar al adaptador de contenedor; es stack, queue, priority_queuecomo 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 y map, multimap, set, multisetson 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 *.hel archivo de encabezado; pero para Cdistinguirlo 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 Cllamar 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


algoritmo

Supongo que te gusta

Origin blog.csdn.net/Gou_Hailong/article/details/127610249
Recomendado
Clasificación