Buscar..


Introducción

std::forward_list es un contenedor que admite la inserción y eliminación rápida de elementos desde cualquier parte del contenedor. El acceso aleatorio rápido no es compatible. Se implementa como una lista enlazada individualmente y, en esencia, no tiene ningún gasto general en comparación con su implementación en C. Comparado con std::list este contenedor proporciona un almacenamiento más eficiente en espacio cuando no se necesita la iteración bidireccional.

Observaciones

Agregar, eliminar y mover los elementos dentro de la lista, o en varias listas, no invalida los iteradores que actualmente hacen referencia a otros elementos en la lista. Sin embargo, un iterador o referencia que se refiere a un elemento se invalida cuando el elemento correspondiente se elimina (a través de erase_after) de la lista. std :: forward_list cumple con los requisitos de Container (excepto la función de miembro de tamaño y la complejidad de ese operador == es siempre lineal), AllocatorAwareContainer y SequenceContainer.

Ejemplo

#include <forward_list>
#include <string>
#include <iostream>

template<typename T>
std::ostream& operator<<(std::ostream& s, const std::forward_list<T>& v) {
    s.put('[');
    char comma[3] = {'\0', ' ', '\0'};
    for (const auto& e : v) {
        s << comma << e;
        comma[0] = ',';
    }
    return s << ']';
}

int main() 
{
    // c++11 initializer list syntax:
    std::forward_list<std::string> words1 {"the", "frogurt", "is", "also", "cursed"};
    std::cout << "words1: " << words1 << '\n';
 
    // words2 == words1
    std::forward_list<std::string> words2(words1.begin(), words1.end());
    std::cout << "words2: " << words2 << '\n';
 
    // words3 == words1
    std::forward_list<std::string> words3(words1);
    std::cout << "words3: " << words3 << '\n';
 
    // words4 is {"Mo", "Mo", "Mo", "Mo", "Mo"}
    std::forward_list<std::string> words4(5, "Mo");
    std::cout << "words4: " << words4 << '\n';
}

Salida:

words1: [the, frogurt, is, also, cursed]
words2: [the, frogurt, is, also, cursed]
words3: [the, frogurt, is, also, cursed]
words4: [Mo, Mo, Mo, Mo, Mo]

Métodos

Nombre del método Definición
operator= asigna valores al contenedor
assign asigna valores al contenedor
get_allocator devuelve el asignador asociado
------ ------
Acceso a elementos
front acceder al primer elemento
------ ------
Iteradores
before_begi n devuelve un iterador al elemento antes de comenzar
cbefore_begin devuelve un iterador constante al elemento antes de comenzar
begin regresa un iterador al principio
cbegin devuelve un iterador de const al principio
end devuelve un iterador al final
cend devuelve un iterador al final
Capacidad
empty comprueba si el contenedor está vacío
max_size Devuelve el máximo número posible de elementos.
Modificadores
clear borra los contenidos
insert_after inserta elementos después de un elemento
emplace_after construye elementos en el lugar después de un elemento
erase_after borra un elemento después de un elemento
push_front inserta un elemento al principio
emplace_front construye un elemento en el lugar al principio
pop_front elimina el primer elemento
resize Cambia el número de elementos almacenados.
swap intercambia los contenidos
Operaciones
merge fusiona dos listas ordenadas
splice_after Mueve elementos de otro forward_list
remove Remueve elementos que satisfacen criterios específicos.
remove_if Remueve elementos que satisfacen criterios específicos.
reverse invierte el orden de los elementos
unique elimina elementos duplicados consecutivos
sort ordena los elementos


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow