¿Cuál es la diferencia entre set y multiset en STL?


Respuesta 1:

Diferencia entre set, multiset, unordered_set, unordered_multiset

1. Establecer (i) Almacena los valores en orden ordenado. (ascendente a descendente) (ii) Almacena solo valores únicos. (iii) Los elementos solo pueden insertarse o eliminarse, pero no pueden modificarse. (iv) Podemos borrar más de 1 elemento al proporcionar la posición del iterador inicial y final. (v) Recorrido utilizando iteradores. (Vi) Los conjuntos se implementan como árboles de búsqueda binarios balanceados

// Programa CPP para demostrar inserción y

// eliminar en conjunto

#incluir

usando el espacio de nombres estándar;

int main ()

{

// establecer declarar

conjunto s;

// Elementos agregados al conjunto

s.insert (12);

s.insert (10);

en la inserción (2);

s.insert (10); // duplicado agregado

s.insert (90);

en la inserción (85);

en la inserción (45);

// Iterador declarado para atravesar

// establecer elementos

conjunto :: iterador, it1, it2;

costo << "Establecer elementos después de ordenar y"

"eliminando duplicados: \ n";

for (it = s.begin (); it! = s.end (); it ++)

costó << * it << '';

costo << '\ n';

it1 = s.find (10);

it2 = s.find (90);

// elementos de 10 a elementos antes

// 90 borrados

por ejemplo (it1, it2);

cout << "Establecer elementos después de borrar: \ n";

for (it = s.begin (); it! = s.end (); it ++)

costó << * it << '';

devuelve 0;

}

SALIDA: Establecer elementos después de ordenar y eliminar duplicados: 2 10 12 45 85 90 Establecer elementos después de borrar: 2 90

2. Multiset (i) Almacena elementos en orden ordenado. (Ii) Permite el almacenamiento de múltiples elementos. (Iii) Podemos borrar más de 1 elemento dando iterador de inicio y iterador de final. Nota: - Todas las demás propiedades similares a set.

// Programa CPP para demostrar inserción y

// eliminar en conjunto

#incluir

usando el espacio de nombres estándar;

int main ()

{

// declarar multiset

multiset s;

// Elementos agregados al conjunto

s.insert (12);

s.insert (10);

en la inserción (2);

s.insert (10); // duplicado agregado

s.insert (90);

en la inserción (85);

en la inserción (45);

// Iterador declarado para atravesar

// establecer elementos

multiset :: iterador, it1, it2;

cout << "Elementos de varios conjuntos después de ordenar \ n";

for (it = s.begin (); it! = s.end (); it ++)

costó << * it << '';

costo << '\ n';

it1 = s.find (10);

it2 = s.find (90);

// elementos de 10 a elementos anteriores a 90

// borrado

por ejemplo (it1, it2);

cout << "Elementos de varios conjuntos después de borrar: \ n";

for (it = s.begin (); it! = s.end (); it ++)

costó << * it << '';

devuelve 0;

}

Ejecutar en IDE

SALIDA: Elementos de varios conjuntos después de la clasificación 2 10 10 12 45 85 90 Elementos de múltiples conjuntos después del borrado: 2 90

3. Unordered_set (i) Los elementos se pueden almacenar en cualquier orden. (sin orden de clasificación) (ii) Almacena solo valores únicos. (iii) Tabla hash utilizada para almacenar elementos. (iv) Podemos borrar solo el elemento para el que se proporciona la posición del iterador. Nota: - Todas las demás propiedades similares al conjunto.

// Programa CPP para demostrar inserción y

// eliminar en unordered_set

#incluir

usando el espacio de nombres estándar;

int main ()

{

// unordered_set declare

conjunto_ordenados s;

// Elementos agregados al conjunto

s.insert (12);

s.insert (10);

en la inserción (2);

s.insert (10); // duplicado agregado

s.insert (90);

en la inserción (85);

en la inserción (45);

s.insert (12);

en la inserción (70);

// Iterador declarado para atravesar

// establecer elementos

conjunto_ordenados :: iterador, it1;

cout << "Elementos desordenados después de ordenar: \ n";

for (it = s.begin (); it! = s.end (); it ++)

costó << * it << '';

costo << '\ n';

it1 = s.find (10);

// elemento 10 borrado

por ejemplo (it1);

cout << "Elementos de unredered_set después de borrar: \ n";

for (it = s.begin (); it! = s.end (); it ++)

costó << * it << '';

devuelve 0;

}

Ejecutar en IDE

SALIDA: Elementos de conjunto no ordenados después de la clasificación: 70 85 45 12 10 2 90 Elementos de conjunto no ordenados después de borrar: 70 85 45 12 2 90 

4. Unordered_multiset (i) Los elementos pueden almacenarse en cualquier orden. (Ii) Los elementos duplicados pueden almacenarse. (Iii) La tabla hash se usa para almacenar elementos. (Iv) Solo podemos borrar el elemento para el que se proporciona la posición del iterador. Nota: - Todas las demás propiedades similares a set.

// Programa CPP para demostrar inserción y

// eliminar en unordered_multiset

#incluir

usando el espacio de nombres estándar;

int main ()

{

// unordered_multiset declare

Desordenado_multiset s;

// Elementos agregados al conjunto

s.insert (12);

s.insert (10);

en la inserción (2);

s.insert (10); // duplicado agregado

s.insert (90);

en la inserción (85);

en la inserción (45);

// Iterador declarado para atravesar

// establecer elementos

Desordenado_multiset :: iterador, it1;

cout << "Elementos desordenados de varios conjuntos después de ordenar: \ n";

for (it = s.begin (); it! = s.end (); it ++)

costó << * it << '';

costo << '\ n';

it1 = s.find (10);

// elemento 10 entrenado

por ejemplo (it1);

cout << "Elementos desordenados de varios conjuntos después de"

"borrar: \ n";

for (it = s.begin (); it! = s.end (); it ++)

costó << * it << '';

devuelve 0;

}

SALIDA: Elementos de varios conjuntos desordenados después de la clasificación: 85 45 12 90 2 10 10 Elementos de múltiples conjuntos desordenados después del borrado: 85 45 12 90 2 10 

Conclusión: en palabras simples, set es un contenedor que almacena elementos ordenados y únicos. Si se agrega sin ordenar significa que los elementos no están ordenados. Si se agrega un conjunto múltiple, se permite el almacenamiento de elementos duplicados.

COMPROBAR MI ARTÍCULO->

Diferencia entre set, multiset, unordered_set, unordered_multiset - GeeksforGeeks

Este artículo es contribuido por SHAURYA UPPAL.


Respuesta 2:

El conjunto en STL en general, mantiene solo los elementos únicos y los mantiene ordenados, y este es el set.set predeterminado - Referencia de C ++

hay muchas versiones del conjunto, como el multiset, y pierde la función que "mantiene una instancia única", por lo que puede contener muchas instancias del mismo valor y también mantenerlas ordenadas. multiset - Referencia de C ++

otro tipo de conjuntos es el conjunto desordenado, y pierde las características de "mantenerlos ordenados", pero sigue utilizando la función de "mantenerlos únicos". unordered_set - Referencia de C ++