Tecnología

Inicio

Cómo aprender contenedores STL

Las clases de contenedores de STL que facilitan la programación productivo, seguro y robusto. Son matrices inteligentes que realizan la asignación de memoria de forma automática, puede cambiar el tamaño, permitirá pasar variables por referencia, insertar elementos en cualquier punto, todas con ardiente eficiencia. Proporcionan una buena razón para el cambio de C con sus matrices mudos a C ++. STL ofrece dos tipos de clases de contenedores: simple y asociativo, donde una clave asociada a cada objeto almacenado.

Instrucciones

1 Leer y memorizar opcionalmente las dos categorías de clases de contenedores. Memorizarlos no hace daño a nadie y serán de beneficio para usted en el largo plazo.

Los contenedores simples: vector <>, <>, listas de pila <>, cola de <>, <deque>

Asociativo Contenedores: mapa de <>, establezca <>, multimap <>, conjunto múltiple <>

2 Obtener información acerca de todas las clases de contenedores al ser mostrado cómo se puede utilizar un recipiente simple. Este tutorial ilustrar los métodos de vector <>.

3 Asignar un tamaño al vector. Puede asignar el tamaño del vector utilizando cualquiera de los constructores sobrecargados. Además, puede utilizar la reserva () o asignar () método después de que se ha declarado un vector. Todos los métodos se muestran a continuación:

vector <int> arr (50); // Especificar la capacidad

vector <int> arr (50, 17); // Especificar la capacidad y dar a todos los elementos de un valor predeterminado (17)

vector <int> arr2 (arr); // Inicializar un vector de otro vector

vector <int> vec;

vec.reserve (100); // O reserva de uso () para asignar memoria

4 Iterar a través de un vector. Usted puede hacer esto mediante el uso de los índices estándar [DE] operador oa través de iteradores, que son una característica especial STL. Sus capacidades están más allá del alcance de este tutorial. Los siguientes fragmentos de código demuestran el tamaño (), begin () y al final () miembros:

// Usando la indexación estándar

for (int i = 0; i <= vec.size (); i ++) {

cout <
}

// Uso de iteradores

para (vector <> :: iterador iter = vec.begin ();! iter = vec.end (); iter ++) {

cout << * iter <
}

5 Añadir un elemento al final, eliminar ese elemento, insertar un elemento en el medio y devolver el tamaño del contenedor. Puede realizar todas estas funciones mediante el uso de la push_back (), pop_back (), insert () y el tamaño () métodos, respectivamente, como se muestra a continuación:

vec.push_back (35);

vec.pop_back ();

vec.insert (pos, 19); // Pos es la ubicación

cout << vec.size () << endl;

6 Borrar los elementos dentro de un rango, borrar el resto de los elementos y asegúrese de que el vector está vacía. Para estos, utiliza las funciones miembro de borrado (), claro () y vacío ().

vec.erase (vec.begin () + 5, vec.end () - 5); // Borrar todos los elementos excepto el primero y el último 5

vec.clear (); // Borrar todos los elementos

si (verdadero vec.empty == ()) {...} // comprobar si está vacío vector

7 Echa un vistazo a todas las funciones miembro que se ofrecen en el vector <>. Muchos de ellos son comunes en todo el resto de las clases de contenedores:

_Destroy (), _Eq (), _es (), _Ucopy (), _Ufill (), Asigne (), al (), begin (), espalda (), capacidad (), claro (), vacío (), final ( ), borrar (), frontal (), get_allocator (), max_size (), insert (), el operador =, el operador [], pop_back (), push_back (), rbegin (), rend (), reserva (), cambiar el tamaño (), el tamaño (), intercambio (), ~ vector ().

8 Asegúrese de incluir el archivo de cabecera vector.h en la parte superior de su archivo de origen antes de probar este código por sí mismo. Cada clase de contenedor tiene su propio archivo de cabecera. Una lista <> requerirá list.h, una cola de <> requerirá queue.h, y así sucesivamente.

Consejos y advertencias

  • Las clases de contenedores van de la mano con las funciones de algoritmo, otra de las características de gran alcance de la Biblioteca de plantillas estándar.