Secuencia vs contenedores asociativos en C++

Contenedores de secuencia

En la biblioteca de plantillas estándar, se refieren al grupo de plantillas de clase de contenedor , que usamos para almacenar datos. Una propiedad común, como sugiere el nombre, es que se puede acceder a los elementos secuencialmente.  
Cada uno de los siguientes contenedores utiliza un algoritmo diferente para el almacenamiento de datos, por lo que para diferentes operaciones tienen una velocidad diferente. Y todos los elementos de los contenedores deben ser del mismo tipo

  1. array = Implementa una array no redimensionable.  
    ej: int arr[10]; // array de tamaño fijo 10.
  2. vector = Implementa una array dinámica con acceso aleatorio más rápido, estos son bastante útiles ya que, a diferencia de las arrays, pueden cambiar de tamaño. 
    ej: vector<int> v; // vector de tipo int
  3. dequeue Se utiliza para implementar una cola de dos extremos con un acceso aleatorio más rápido, 
    por ejemplo: dequeue dq; //eliminar la cola del tipo de carácter
  4. forward_list : implementa una lista enlazada individualmente. 
    ej.: forward_list fl; // forward_list de tipo int.
  5. lista : Implementa lista doble enlazada
    ej: lista l; // listas de int

contenedores asociativos

En las bibliotecas de plantillas estándar, se refieren al grupo de plantillas de clase utilizadas para implementar arrays asociativas. Se utilizan para almacenar elementos, pero tienen algunas restricciones en sus elementos. 
Y dos características importantes de estos contenedores son 

  1. Existe una clave. En caso de mapa y conjunto, la clave es única. En el caso de multimap y multiset, se permiten múltiples valores para una clave. En el caso de mapa y multimapa, hay pares clave-valor. En caso de conjunto, solo hay llaves.
  2. Los elementos siguen un estricto ordenamiento débil . .

Estos son los siguientes que vienen bajo los contenedores asociativos  

  1. map : aquí cada clave que creemos debe ser única. 
    ej: mapa geek_no; // Aquí el primer tipo de datos es clave y el segundo tipo de datos es valor
  2. conjunto : aquí también la clave que creamos debe ser única, pero una distinción importante del mapa es que aquí el valor en sí mismo actúa como una clave , lo que significa que los elementos en el conjunto son únicos, es decir, no se repiten. 
    ej: conjunto s; // el valor en sí mismo actúa como una clave.
  3. multimapa : igual que el mapa pero aquí la clave no necesita ser única. 
    ej: multimap geeks_no;
  4. multiset : igual que set, pero aquí la singularidad de los elementos no importa, es decir, podemos tener el mismo elemento varias veces a diferencia de set. 
    ej: marcas multiset;

Secuencia vs asociativo (complejidad sabia) 
En contenedores de secuencia  

  1. La inserción simple requiere un tiempo constante.
  2. Frente tiene tiempo amortizado constante.
  3. La inserción en el medio es bastante lenta.

En contenedores asociativos, la mayoría de las complejidades están en términos logarítmicos  

  1. Insertar un elemento es O(log n)
  2. Eliminando un elemento O(log n)
  3. Buscando un elemento O(log n)
  4. Iterador incremental o decreciente O(1)(amortizado)
  5. La inserción en el medio es más rápida.

Contenedor asociativo desordenado

Tenga en cuenta que cada contenedor asociativo tiene un contenedor asociativo desordenado que contiene elementos sin ningún orden específico. Ejemplos de contenedores asociativos desordenados son unordered_set , unordered_map , unordered_multimap , unordered_multiset .
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *