Tutorial de C ++ STL
Espero que ya haya entendido el concepto de plantilla C ++ que hemos discutido anteriormente. C ++ STL (Biblioteca de plantillas estándar) es un poderoso conjunto de clases de plantillas C ++ para proporcionar clases y funciones de propósito general con plantillas que implementan muchos algoritmos y estructuras de datos populares y de uso común, como vectores, listas, colas y pilas.
En el núcleo de la biblioteca de plantillas estándar de C ++ se encuentran tres componentes bien estructurados:
No Señor | Descripción de Componente |
---|---|
1 | Containers Los contenedores se utilizan para gestionar colecciones de objetos de cierto tipo. Hay varios tipos diferentes de contenedores como deque, lista, vector, mapa, etc. |
2 | Algorithms Los algoritmos actúan sobre contenedores. Proporcionan los medios por los cuales realizará la inicialización, clasificación, búsqueda y transformación del contenido de los contenedores. |
3 | Iterators Los iteradores se utilizan para recorrer los elementos de las colecciones de objetos. Estas colecciones pueden ser contenedores o subconjuntos de contenedores. |
Discutiremos sobre los tres componentes STL de C ++ en el próximo capítulo mientras hablamos de la biblioteca estándar de C ++. Por ahora, tenga en cuenta que los tres componentes tienen un rico conjunto de funciones predefinidas que nos ayudan a realizar tareas complicadas de una manera muy sencilla.
Tomemos el siguiente programa que demuestra el contenedor vectorial (una plantilla estándar de C ++) que es similar a una matriz, con la excepción de que maneja automáticamente sus propios requisitos de almacenamiento en caso de que crezca:
#include <iostream>
#include <vector>
using namespace std;
int main() {
// create a vector to store int
vector<int> vec;
int i;
// display the original size of vec
cout << "vector size = " << vec.size() << endl;
// push 5 values into the vector
for(i = 0; i < 5; i++) {
vec.push_back(i);
}
// display extended size of vec
cout << "extended vector size = " << vec.size() << endl;
// access 5 values from the vector
for(i = 0; i < 5; i++) {
cout << "value of vec [" << i << "] = " << vec[i] << endl;
}
// use iterator to access the values
vector<int>::iterator v = vec.begin();
while( v != vec.end()) {
cout << "value of v = " << *v << endl;
v++;
}
return 0;
}
Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:
vector size = 0
extended vector size = 5
value of vec [0] = 0
value of vec [1] = 1
value of vec [2] = 2
value of vec [3] = 3
value of vec [4] = 4
value of v = 0
value of v = 1
value of v = 2
value of v = 3
value of v = 4
Aquí están los siguientes puntos que deben tenerse en cuenta relacionados con varias funciones que usamos en el ejemplo anterior:
La función miembro push_back () inserta un valor al final del vector, expandiendo su tamaño según sea necesario.
La función size () muestra el tamaño del vector.
La función begin () devuelve un iterador al inicio del vector.
La función end () devuelve un iterador al final del vector.