establecer vs mapa en C++ STL

set y map en STL son similares en el sentido de que ambos usan Red Black Tree (un BST autoequilibrado ). Tenga en cuenta que las complejidades de tiempo de búsqueda, inserción y eliminación son O (Iniciar sesión). 
Diferencias
la diferencia establecida se usa para almacenar solo claves, mientras que el mapa se usa para almacenar pares de valores clave. Por ejemplo, considere en el problema de imprimir elementos distintos ordenados , usamos set ya que se necesita un valor para una clave. Mientras que si cambiamos el problema para imprimir frecuencias de distintos elementos ordenados, usamos map. Necesitamos map para almacenar valores de array como clave y frecuencias como valor.
 

CPP

// CPP program to demonstrate working of set
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    set<int> s1;
    s1.insert(2);
    s1.insert(5);
    s1.insert(3);
    s1.insert(6);
 
    cout << "Elements in set:\n";
    for (auto it : s1)
        cout << it << " "; // Sorted
 
    return 0;
}
Producción: 

Elements in set:
2 3 5 6

 

CPP

// CPP program to demonstrate working of map
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    map<int, int> m;
 
    m[1] = 2; // Insertion by indexing
 
    // Direct pair insertion
    m.insert({ 4, 5 });
 
    // Insertion of pair by make_pair
    m.insert(make_pair(8, 5));
 
    cout << "Elements in map:\n";
    for (auto it : m)
        cout << "[ " << it.first << ", "
             << it.second << "]\n"; // Sorted
 
    return 0;
}
Producción: 

Elements in map:
[ 1, 2]
[ 4, 5]
[ 8, 5]

 

Variaciones de set y map
Set y Map, ambos almacenan valores únicos y también valores ordenados. Pero si no tenemos ese requisito, usamos multiset/multimap y unordered_set/unordered_map. 
Multimap : Multimap no permite que los elementos se almacenen mediante indexación. 
 

CPP

// CPP program to demonstrate working of Multimap
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    multimap<int, int> m;
 
    m.insert({ 1, 2 });
    m.insert({ 2, 3 });
    m.insert({ 4, 5 });
    m.insert({ 2, 3 });
    m.insert({ 1, 2 });
 
    cout << "Elements in Multimap:\n";
    for (auto it : m)
        cout << "[ " << it.first << ", "
             << it.second << "]\n"; // Sorted
 
    return 0;
}
Producción: 

Elements in Multimap:
[ 1, 2]
[ 1, 2]
[ 2, 3]
[ 2, 3]
[ 4, 5]

 

Multiconjunto
 

CPP

// CPP program to demonstrate working of Multiset
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    multiset<int> ms;
 
    ms.insert(1);
    ms.insert(3);
    ms.insert(4);
    ms.insert(2);
    ms.insert(2);
 
    cout << "Elements in Multiset:\n";
    for (auto it : ms)
        cout << it << " ";
 
    return 0;
}
Producción: 

Elements in Multiset:
1 2 2 3 4

 

conjunto_desordenado
 

CPP

// CPP program to demonstrate working of Unordered_set
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    unordered_set<int> us;
 
    us.insert(1);
    us.insert(3);
    us.insert(4);
    us.insert(2);
    us.insert(2);
 
    cout << "Elements in unordered_set:\n";
    for (auto it : us)
        cout << it << " "; // Sorted
 
    return 0;
}
Producción: 

Elements in unordered_set:
2 4 1 3

 

Mapa_desordenado
 

CPP

// CPP program to demonstrate working of Unordered_map
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    unordered_map<int, int> um;
 
    um[1] = 2;
    um[4] = 5;
    um[2] = 3;
    um[8] = 5;
    um[3] = 6;
 
    cout << "Elements in unordered_map:\n";
    for (auto it : um)
        cout << "[ " << it.first << ", " << it.second << "]\n";
 
    return 0;
}
Producción: 

Elements in unordered_map:
[ 3, 6]
[ 2, 3]
[ 8, 5]
[ 1, 2]
[ 4, 5]

 

Veamos las diferencias en forma tabular -:
 

  establecer mapa
1. Set se utiliza para almacenar todos los elementos únicos. map se utiliza para almacenar todos los elementos únicos.
2.

Su sintaxis es -:

conjunto<tipo_datos>nombre_del_conjunto;

Su sintaxis es -:

mapa<tipo_datos, tipo_datos>nombre_del_mapa;

3. Almacena los elementos en orden creciente Almacena los elementos en pares clave, valor.
4. El conjunto se implementa mediante el árbol de búsqueda binario. El mapa se implementa utilizando el árbol binario de equilibrio.
5. Los conjuntos se recorren usando los iteradores.  Se define en el archivo de encabezado #include <mapa>.

Publicación traducida automáticamente

Artículo escrito por Abhishek rajput 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 *