Librería Arduino List


La clase List implementa una array de tamaño dinámico, es decir, una colección en la que es posible añadir o eliminar elementos, y la colección aumenta o disminuye su capacidad en función del número de elementos almacenados.

El funcionamiento de la clase List es similar a la clase Vector de C++, pero en una implementación sencilla que puede ser empleada en un procesador como Arduino. Sin embargo, los nombres de los métodos y variables se asemejan a la clase genérica List disponible en C#, más modernos y actualizados.

La clase List emplea Templates para poder contener cualquier tipo de objeto o tipos básicos.

La clase List se inicializa a una determinada capacidad, que por defecto es 4 elementos. Internamente la clase implementa un array del tamaño de la capacidad de la lista.

La variable Count contabiliza el número de elementos ocupados en la lista. La lista está llena cuando el número de elementos es igual a la capacidad de la lista.

En caso de añadir un elemento cuando la lista está llena, el array interno se copia a un nuevo array del doble de capacidad del array inicial. El proceso de expansión requiere la creación de un nuevo array y la copia de los elementos, lo que supone un tiempo adicional a una inserción simple.

El acceso a los elementos de la lista se realiza mediante el indexador [], como en el caso de un array normal. Adicionalmente se disponen de métodos para añadir, insertar, reemplazar o eliminar elementos o series de elementos.

Los métodos Trim permiten ajustar la capacidad de la lista al número de elementos realmente ocupados, con objeto de reducir la memoria ocupada por la lista. Al igual que el proceso de expansión, la contracción requiere un tiempo adicional.

También se disponen de métodos para buscar elementos dentro de la lista, invertir los elementos, y para copiar los elementos desde y hacia un array externo.

Finalmente, se dispone de métodos especiales para insertar o eliminar elementos en la primera y última posición, que permiten implementar de forma sencilla estructuras de tipo LIFO (Pila) y FIFO (Cola).

Para más información consultar la entrada
Implementar un array de tamaño dinamico en Arduino.

Manual de uso

Constructor

La clase List se instancia a través de su constructor.

Métodos generales

Acceder elementos

Añadir elementos

Insertar elementos

Reemplazar elementos

Eliminar elementos

Reducir capacidad

Buscar elementos

Conversión desde/hacia arrays

Ejemplos

La librería List incluye los siguientes ejemplos para ilustrar su uso.

  • List: Ejemplo general de uso de la clase List

Instalación

  • Descargar la última versión desde GitHub
  • Descomprimir el archivo
  • Copiar en tu carpeta de librerías (normalmente Mis Documentos\Arduino\libraries)
  • Relanzar el IDE de Arduino

Si te ha gustado esta entrada y quieres leer más sobre Arduino puedes consultar la sección
tutoriales de Arduino
Previous Implementar un array de tamaño dinámico en Arduino
Next Implementar una Linked List en Arduino