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.