Skip to content

Commit f5cd8df

Browse files
Update README.md
1 parent 1fa795f commit f5cd8df

File tree

1 file changed

+157
-1
lines changed

1 file changed

+157
-1
lines changed

README.md

Lines changed: 157 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,157 @@
1-
# Arduino-List
1+
# Librería Arduino List
2+
Librería para Arduino que un 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.
3+
4+
Más información https://www.luisllamas.es/libreria-arduino-list/
5+
6+
## Instrucciones de uso
7+
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.
8+
9+
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.
10+
11+
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.
12+
13+
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.
14+
15+
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.
16+
17+
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.
18+
19+
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).
20+
21+
22+
### Constructor
23+
La clase List se instancia a través de su constructor.
24+
```c++
25+
// Crea una nueva lista con capacidad 4
26+
List();
27+
28+
// Crea una nueva lista con capacidad capacity
29+
List(size_t capacity);
30+
```
31+
32+
### Métodos generales
33+
```c++
34+
// Devuelve la capacidad de la lista
35+
size_t Capacity() const;
36+
37+
// Devuelve el numero de elementos guardados en la lista
38+
size_t Count() const;
39+
40+
// Devuelve true si la lista esta vacia
41+
// false en caso contrario
42+
bool IsEmpty();
43+
44+
// Devuelve true si la lista esta llena
45+
// false en caso contrario
46+
bool IsFull();
47+
48+
// Invierte los elementos de la lista
49+
void Reverse();
50+
```
51+
52+
53+
### Acceder elementos
54+
```c++
55+
// Indexador de la lista permite acceder a un elemento usando list[index]
56+
T& operator[](const size_t index);
57+
58+
// Devuelve el primer elemento de la lista
59+
void First();
60+
61+
// Devuelve el ultimo elemento de la lista
62+
void Last();
63+
```
64+
65+
66+
### Añadir elementos
67+
```c++
68+
// Añade un elemento al final de la lista
69+
void Add(T item);
70+
71+
// Añade una serie de elementos al final de la lista
72+
void AddRange(T* items, size_t numItems);
73+
```
74+
75+
### Insertar elementos
76+
```c++
77+
// Inserta un elemento al principio de la lista
78+
void Insert(T item);
79+
80+
// Inserta un elemento en la posicion indicada
81+
void Insert(size_t index, T item);
82+
83+
// Inserta una serie de elementos al principio de la lista
84+
void InsertRange(T* items, size_t numItems);
85+
86+
// Inserta una serie de elementos en la posicion indicada
87+
void InsertRange(size_t index, T* items, size_t numItems);
88+
```
89+
90+
### Reemplazar elementos
91+
```c++
92+
// Remplaza el elemento de la posicion indicada
93+
void Replace(size_t index, T item);
94+
95+
// Reemplaza una serie de elementos en la posicion indicada
96+
void ReplaceRange(size_t index, T* items, size_t numItems);
97+
```
98+
99+
### Eliminar elementos
100+
```c++
101+
// Elimina todos los elementos de la lista
102+
void Clear();
103+
104+
// Elimina el primer elemento de la lista
105+
void RemoveFirst();
106+
107+
// Elimina el ultimo elemento de la lista
108+
void RemoveLast();
109+
110+
// Elementa el elemento de la posicion indicada
111+
void Remove(size_t index);
112+
113+
// Elimina una serie de elementos de la posicion indicada
114+
void RemoveRange(size_t index, size_t numItems);
115+
```
116+
117+
### Reducir capacidad
118+
```c++
119+
// Reduce la capacidad de la lista al numero de elementos para reducir la memoria empleada
120+
void Trim();
121+
122+
// Reduce la capacidad de la lista al numero de elementos
123+
// mas una cierta capacidad de reserva
124+
void Trim(size_t reserve);
125+
```
126+
127+
### Buscar elementos
128+
```c++
129+
// Devuelve true si la lista contiene un elemento, false en caso contrario
130+
bool Contains(T item);
131+
132+
// Devuelve el indice de la primera ocurencia de un elemento en la lista
133+
size_t IndexOf(T item);
134+
```
135+
136+
### Conversión desde/hacia arrays
137+
```c++
138+
// Devuelve todos los elementos de la lista en un nuevo array
139+
T* ToArray();
140+
141+
// Devuelve una serie de elementos de la lista en un nuevo array
142+
T* ToArray(size_t index, size_t numItems);
143+
144+
// Inicia una lista copiando los elementos desde un array existente
145+
void FromArray(T* items, size_t numItems);
146+
147+
// Copia todos los elementos a un array existente
148+
void CopyTo(T* items);
149+
150+
// Copia una serie de elementos a un array existente
151+
void CopyTo(T* items, size_t index, size_t numItems);
152+
```
153+
154+
155+
## Ejemplos
156+
La librería List incluye los siguientes ejemplos para ilustrar su uso.
157+
* List: Ejemplo general de uso de la clase List.

0 commit comments

Comments
 (0)