Lista de reenvío en la biblioteca de plantillas estándar de C++ . Se encuentra en el archivo de encabezado #include<forward_list>. Se implementa como una lista de enlaces únicos . Se introdujo en C++ 11 por primera vez. Las listas de reenvío son contenedores de secuencias que permiten operaciones de inserción y borrado de tiempo constante desde cualquier lugar dentro de la secuencia. En el caso de una lista de reenvío, no se admite el acceso aleatorio rápido.
A diferencia de otras bibliotecas STL, std::forward_list no tiene ningún método size(). Por lo tanto, en este artículo, le mostraremos cómo obtener el tamaño de un std::forward_list en C++ STL.
Hay un problema al recuperar el tamaño de las listas de reenvío porque std::forward_list no tiene ninguna función de miembro std::size(). Para obtener el tamaño de las listas de reenvío, se puede usar la función std::distance() .
Acercarse:
Dado que la función std::distance() toma dos iteradores como argumentos y devuelve un número entero, se pueden pasar las funciones std::begin() y std::end() que apuntan a la dirección del primer elemento y la dirección después del último elemento.
Sintaxis:
tamaño = distancia(forward_list.begin(), forward_list.end());
A continuación se muestra el código C++ para implementar el enfoque anterior:
C++14
// C++ program to implement // the above approach #include <forward_list> #include <iostream> using namespace std; // Driver code int main() { forward_list<int> l1 = { 3, 5, 6, 9, 6 }; // l.size() will throw an error, since // there is no size() method for // forward_list. So, to calculate the // size, we will use std::distance(iterator1, // iterator2), where iterator1 will be // l.begin() and iterator2 will be l.end() int size = distance(l1.begin(), l1.end()); cout << "Size of l1 is : " << size << endl; l1.remove(6); // It will erase all instances of 6 // from the list size = distance(l1.begin(), l1.end()); cout << "Size of l1, after removing all" << " instances of 6 is : " << size << endl; forward_list<int> l2 = { 6, 11, 0 }; int size2 = distance(l2.begin(), l2.end()); cout << "Size of l2, before assigning" << " it to l1 : " << size2 << endl; l1.splice_after(l1.begin(), l2); // It will assign l2 to l at the // provided iterator, making l1 // as empty. size = distance(l1.begin(), l1.end()); size2 = distance(l2.begin(), l2.end()); cout << "Size of l1, after assigning" << " l2 to it : " << size << endl; cout << "Size of l2, after assigning" << " it to l1 : " << size2 << endl; }
Size of l1 is : 5 Size of l1, after removing all instances of 6 is : 3 Size of l2, before assigning it to l1 : 3 Size of l1, after assigning l2 to it : 6 Size of l2, after assigning it to l1 : 0
Publicación traducida automáticamente
Artículo escrito por ashish0401 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA