Contenedores C++<forward_list>

en la biblioteca estándar de C++<forward_list>es un contenedor que proporciona una estructura de datos de lista enlazada simple.

A diferencia de la lista doblemente enlazada (std::list),std::forward_listsolo admite recorrido unidireccional. Es adecuado para escenarios que requieren recorrido hacia adelante e inserciones y eliminaciones frecuentes. Lo siguiente es unastd::forward_listforward_list

descripción detallada de::

  • std::forward_listLista enlazada simple
  • Es una lista enlazada unidireccional, solo se puede recorrer de adelante hacia atrás, no en sentido inverso.

Debido a su estructura de lista enlazada unidireccional, las operaciones de inserción y eliminación son muy eficientes en una posición conocida (complejidad O(1)).:

  • ystd::listBaja sobrecarga de memoriastd::forward_listEn comparación,

solo necesita un puntero al siguiente nodo, lo que ahorra memoria.:

  • No admite acceso aleatoriooperator[]oatNo admite el acceso a elementos por índice, no se puede usar

Sintaxis

std::forward_listEs una clase de plantilla en la biblioteca estándar de C++, definida en<forward_list>archivo de cabecera. Utiliza el parámetro de plantillaTpara especificar el tipo de elementos almacenados en la lista.

Lo siguiente esstd::forward_listla sintaxis básica de:

#include <forward_list>

std::forward_list<T> list;

Constructores

std::forward_listProporciona varios constructores, incluyendo:

  • Constructor predeterminado: crea unforward_list。
  • Constructor con valores iniciales: crea un que contiene los valores iniciales dadosforward_list。
  • Constructor de rango: crea un que contiene los elementos del rango especificadoforward_list。

Funciones miembro comunes

  • void push_front(const T& value): inserta un elemento al frente de la lista.
  • void pop_front(): elimina el elemento del frente de la lista.
  • iterator before_begin(): devuelve un iterador que apunta a la posición anterior al frente de la lista.
  • iterator begin(): devuelve un iterador que apunta al frente de la lista.
  • iterator end(): devuelve un iterador que apunta al final de la lista.

Ejemplo

A continuación se muestra un ejemplo que utilizastd::forward_listun ejemplo simple, que incluye crear la lista, agregar elementos, recorrer la lista y mostrar los resultados.

Ejemplo

#include <iostream>
#include <forward_list>

int main() {
    // Crea un forward_list vacío
    std::forward_list<int> fl;

    // Agrega elementos al frente de la lista
    fl.push_front(10);
    fl.push_front(20);
    fl.push_front(30);

    // Recorre el forward_list y muestra los elementos
    for (auto it = fl.begin(); it != fl.end(); ++it) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;

    // Salida: 30 20 10

    return 0;
}

Cuando ejecutes el código anterior, verás la siguiente salida:

30 20 10

std::forward_listEs un contenedor muy útil en la biblioteca estándar de C++, especialmente adecuado para escenarios donde se necesitan inserciones y eliminaciones frecuentes en el frente de la lista. Aunque no admite acceso aleatorio, en algunos casos sus ventajas de rendimiento pueden compensar esta deficiencia. Espero que este artículo ayude a los principiantes a comprender y usar mejorstd::forward_list。

Otras extensiones