Cómo obtener un elemento en una posición específica en la Lista en C++

La lista no tiene un operador de acceso aleatorio [] para acceder a los elementos por índices, porque std::list almacena elementos internamente en una lista doblemente enlazada . Entonces, para acceder a un elemento en cualquier ubicación K , la idea es iterar uno por uno desde el principio hasta el elemento K. En lugar de iterar por K veces. Para ello se utiliza una función STL std::advance() para encontrarlo en tiempo lineal.

Sintaxis:

advance(InputIterator& it, Distance N)

Parámetros: esta función acepta dos parámetros, es decir, el iterador que se va a recorrer a través de la lista y la posición a la que se debe mover. La posición puede ser negativa para el acceso aleatorio y los iteradores bidireccionales .

Tipo de devolución: esta función no tiene tipo de devolución.

A continuación se muestra la implementación en C++ del enfoque anterior:

C++

// C++ program to access  Kth element
// of the list using advanced
#include <bits/stdc++.h>
using namespace std;
  
// Driver Code
int main()
{
    // Create list with initial value 100
    list<int> li(5, 100);
  
    // Insert 20 and 30 to the list
    li.push_back(20);
    li.push_back(30);
  
    // Elements of list are
    // 100, 100, 100, 100, 100, 20, 30
  
    // Initialize iterator to list
    list<int>::iterator it = li.begin();
  
    // Move the iterator by 5 elements
    advance(it, 5);
  
    // Print the element at the it
    cout << *it;
  
    return 0;
}
Producción:

20

Publicación traducida automáticamente

Artículo escrito por shivanisug18ec 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 *