Diferencia entre std::set vs std::vector en C++ STL

Vectores : los vectores son contenedores similares a las arrays dinámicas, con la capacidad de cambiar de tamaño cuando se inserta o elimina un nuevo elemento. Es una plantilla de Standard Template Library o STL, que aporta más flexibilidad al programa. Los elementos de los vectores se colocan en almacenamiento contiguo y se recorren mediante iteradores .

Ejemplos:

vector <int> v;
v.push_back(1);
v.push_back(2);
v.clear();

A continuación se muestra la implementación de vectores en C++:
 

C++

// C++ program to demonstrate the
// working of vector in cpp
#include <bits/stdc++.h>
using namespace std;
 
// Driver Code
int main()
{
    vector<int> v;
 
    // Inserting elements in vector
    v.push_back(11);
    v.push_back(6);
    v.push_back(12);
    v.push_back(0);
    v.push_back(0);
 
    // Elements are stored in the
    // order of insertion with the
    // duplicate element
    cout << "Elements in vector are:\n";
    for (auto it : v) {
        cout << it << " ";
    }
 
    return 0;
}
Producción:

Elements in vector are:
11 6 12 0 0

Complejidad de tiempo: O(N) // Para N inserciones
Espacio auxiliar: O(1)

Conjunto : Conjunto es también una de las plantillas de la Biblioteca de plantillas estándar o STL . Es un contenedor de elementos únicos cuyo valor no se puede modificar una vez agregado al conjunto, pero se puede eliminar o insertar. Los elementos de los conjuntos siempre se almacenan ordenados.

Ejemplos:

set <int> s;
s.insert(1);
s.insert(12);
int key = 1;
s.erase(key);

A continuación se muestra la implementación de conjuntos en C++:
 

C++

// C++ program to demonstrate the
// working of set in c++
#include <bits/stdc++.h>
using namespace std;
 
// Driver Code
int main()
{
    set<int> s;
 
    // Insert elements into the set
    s.insert(11);
    s.insert(6);
    s.insert(12);
    s.insert(0);
 
    // Duplicate elements
    s.insert(0);
 
    cout << "Elements in set:\n";
 
    // The inserted elements get sorted
 
    // Print the elements of the set
    for (auto it : s) {
        cout << it << " ";
    }
 
    return 0;
}
Producción:

Elements in set:
0 6 11 12

Complejidad de tiempo: O(Nlog N) // Para N inserciones
Espacio auxiliar: O(1)

Diferencia tabular entre el vector y el conjunto :

Vector

Establecer

Los elementos del vector no están ordenados. Los elementos de los conjuntos siempre están ordenados.
Puede contener elementos duplicados. Contiene sólo elementos únicos.
El vector está desordenado. El conjunto está ordenado.
La complejidad de tiempo para la inserción de un nuevo elemento es O(1) . La complejidad de tiempo para la inserción de un nuevo elemento es O(log N) .
Vector es más rápido para la inserción y eliminación de elementos al final del contenedor. El conjunto es más rápido para la inserción y eliminación de elementos en el medio del contenedor.
 

Publicación traducida automáticamente

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