Lista en C++: algunas funciones útiles

Las listas son contenedores de secuencias que permiten la asignación de memoria no contigua. En comparación con el vector, la lista tiene un recorrido lento, pero una vez que se ha encontrado una posición, la inserción y la eliminación son rápidas. 

Lista de funciones útiles:

1. emplace(posición, valor) : esta función se utiliza para insertar un elemento en la posición especificada.  
2. emplace_back (valor) : – Esta función agrega valor al final de la lista. Es diferente de push_back() por el hecho de que crea elementos directamente en la posición, mientras que push_back() primero hace una copia temporal y copia desde allí. emplace_back() es más rápido en la implementación que push_back() en la mayoría de las situaciones.
3. emplace_front(valor): Esta función agrega valor al principiode la Lista. Es diferente de push_front() por el hecho de que crea elementos directamente en la posición, mientras que push_front() primero hace una copia temporal y copia desde allí. emplace_front() es más rápido en la implementación que push_front() en la mayoría de las situaciones.
 

CPP

// C++ code to demonstrate the working of
// emplace(), emplace_front() and emplace_back()
#include <iostream>
#include <list> // for list functions
using namespace std;
 
// Driver Code
int main()
{
    // Declaring a list
    list<int> gqlist;
 
    // Initialising list iterator
    list<int>::iterator it = gqlist.begin();
 
    // Entering list element using emplace_back()
    for (int i = 1; i <= 5; i++)
        gqlist.emplace_back(i);
 
    // Displaying list elements
    cout << "List after emplace_back operation is : ";
    for (int& x : gqlist)
        cout << x << " ";
    cout << endl;
 
    // Entering list element using emplace_front()
    for (int i = 10; i <= 50; i += 10)
        gqlist.emplace_front(i);
 
    // Displaying list elements
    cout << "List after emplace_front operation is : ";
    for (int& x : gqlist)
        cout << x << " ";
    cout << endl;
 
    // using advance() to advance iterator position
    advance(it, 2);
 
    // inserting element at 2nd position using emplace()
    gqlist.emplace(it, 100);
 
    // Displaying list elements
    cout << "List after emplace operation is : ";
    for (int& x : gqlist)
        cout << x << " ";
    cout << endl;
 
    return 0;
}
Producción

List after emplace_back operation is : 1 2 3 4 5 
List after emplace_front operation is : 50 40 30 20 10 1 2 3 4 5 
List after emplace operation is : 50 100 40 30 20 10 1 2 3 4 5 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)
 

4. merge(list2) : esta función se utiliza para fusionar list2 con list1 . Si ambas listas están ordenadas, la lista resultante también está ordenada.
5. remove_if(condición) : Esta función elimina el elemento de la Lista sobre la base de la condición dada en su argumento.

CPP

// C++ code to demonstrate the working of
// merge() and remove_if()
#include <iostream>
#include <list> // for list functions
using namespace std;
 
// Driver Code
int main()
{
    // Initializing list1
    list<int> gqlist1 = { 1, 2, 3 };
 
    // Initializing list2
    list<int> gqlist2 = { 2, 4, 6 };
 
    // using merge() to merge list1 with list2
    gqlist1.merge(gqlist2);
 
    // Displaying list elements
    cout << "list1 after merge operation is : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
 
    // using remove_if() to remove odd elements
    // removes 1 and 3
    gqlist1.remove_if([](int x) { return x % 2 != 0; });
 
    // Displaying list elements
    cout << "list1 after remove_if operation is : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
 
    return 0;
}
Producción

list1 after merge operation is : 1 2 2 3 4 6 
list1 after remove_if operation is : 2 2 4 6 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)

6. unique() : esta función se utiliza para eliminar las apariciones repetidas del número. La lista debe ordenarse para que esta función se ejecute.
7. splice(posición, lista2): Esta función se utiliza para transferir elementos de una lista a otra.

CPP

// C++ code to demonstrate the working of
// unique() and splice()
#include <iostream>
#include <list> // for list functions
using namespace std;
 
// Driver Code
int main()
{
    // Initializing list1
    list<int> gqlist1 = { 1, 1, 1, 2, 2, 3, 3, 4 };
 
    // Initializing list2
    list<int> gqlist2 = { 2, 4, 6 };
 
    // Initializing list1 iterator
    list<int>::iterator it = gqlist1.begin();
 
    // using advance() to increment iterator position
    advance(it, 3);
 
    // Displaying list elements
    cout << "list1 before unique operation is : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
 
    // using unique() to remove repeating elements
    gqlist1.unique();
 
    // Displaying list elements
    cout << "list1 after unique operation is : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl << endl;
 
    // using splice() to splice list2 in list1 at position
    // it inserts list2 after 2nd position
    gqlist1.splice(it, gqlist2);
 
    // Displaying list elements
    cout << "list1 after splice operation is : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
 
    return 0;
}
Producción

list1 before unique operation is : 1 1 1 2 2 3 3 4 
list1 after unique operation is : 1 2 3 4 

list1 after splice operation is : 1 2 4 6 2 3 4 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)

8. swap(list2): esta función se utiliza para intercambiar un elemento de lista con otro .

CPP

// C++ code to demonstrate the working of
// swap()
#include <iostream>
#include <list> // for list functions
using namespace std;
 
// Driver Code
int main()
{
    // Initializing list1
    list<int> gqlist1 = { 1, 2, 3, 4 };
 
    // Initializing list1
    list<int> gqlist2 = { 2, 4, 6 };
 
    // Displaying list before swapping
    cout << "The contents of 1st list "
            "before swapping are : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
    cout << "The contents of 2nd list "
            "before swapping are : ";
    for (int& x : gqlist2)
        cout << x << " ";
    cout << endl;
 
    // Use of swap() to swap the list
    gqlist1.swap(gqlist2);
 
    // Displaying list after swapping
    cout << "The contents of 1st list "
            "after swapping are : ";
    for (int& x : gqlist1)
        cout << x << " ";
    cout << endl;
 
    cout << "The contents of 2nd list "
            "after swapping are : ";
    for (int& x : gqlist2)
        cout << x << " ";
    cout << endl;
 
    return 0;
}
Producción

The contents of 1st list before swapping are : 1 2 3 4 
The contents of 2nd list before swapping are : 2 4 6 
The contents of 1st list after swapping are : 2 4 6 
The contents of 2nd list after swapping are : 1 2 3 4 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)

Este artículo es una contribución de Manjeet Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *