Inicialización de Multiset en C++

Inicialización de Multiset en C++

En este artículo, hemos explorado 6 formas diferentes de inicializar Multiset en C++ STL junto con fragmentos de código C++ para cada enfoque.

Índice :

  1. Introducción a Multiset en C++
  2. Inicializar insertando valores uno por uno
  3. Inicializando arreglos similares
  4. Inicializar desde una matriz
  5. Inicializar desde un vector
  6. Inicializar desde otro conjunto múltiple
  7. Inicializando en orden descendente

Introducción a Multiset en C++

Multiset es una estructura de datos que se utiliza para almacenar valores. En la biblioteca de plantillas estándar (STL) de C++, tenemos multiset como un contenedor asociativo . Los contenedores asociativos son aquellos contenedores que se utilizan para almacenar los datos ordenados y son mucho más rápidos en la búsqueda de datos que otros contenedores.

Multiset está presente en el archivo "set header". Su implementación interna se realiza mediante el árbol de búsqueda binario autoequilibrado. La principal diferencia entre un conjunto y un conjunto múltiple es que un conjunto solo puede almacenar valores únicos, pero un conjunto múltiple puede almacenar valores duplicados.

En un conjunto múltiple, los elementos están presentes en el orden ordenado. El acceso aleatorio de un conjunto múltiple no es posible. Significa que no podemos acceder a un elemento en complejidad de tiempo O(1). La complejidad temporal en la búsqueda de un elemento en un Multiset es O(logn). Una vez que se realiza la inserción de elementos en multiset, no podemos modificar el valor del elemento. Podemos insertar más elementos en él e incluso eliminar los elementos del conjunto múltiple, pero la modificación de elementos no es posible.

Sintaxis:

    multiset <datatype> multisetname

Multiset puede tomar el tipo de datos de acuerdo con el valor, es decir, int, string, float, double, etc.

Diferentes formas de inicializar un Multiset en C++ STL:

  1. Inicializar insertando valores uno por uno
  2. Inicializando arreglos similares
  3. Inicializar desde una matriz
  4. Inicializar desde un vector
  5. Inicializar desde otro conjunto múltiple
  6. Inicializando en orden descendente

1. Inicializando insertando valores uno por uno

Todos los elementos en un conjunto múltiple se pueden insertar uno por uno usando el método de clase 'insertar'. Primero, declare el multiconjunto de tipos de datos del valor (que vamos a almacenar) y luego inserte los valores.

Pasos:

  1. Al incluir el archivo de encabezado iostream en nuestro código, esto nos permitirá leer desde la consola y escribir en la consola.
  2. Incluyendo el archivo de encabezado del conjunto, define las clases de contenedor de conjuntos y conjuntos múltiples.
  3. Incluyendo el espacio de nombres std, para que podamos usar el miembro de std, sin llamarlo una y otra vez.
  4. Llama a la función main() dentro de la cual se escribirá la lógica del programa.
  5. Inicio del cuerpo de la función main().
  6. Declarar un conjunto múltiple llamado mymultiset.
  7. Inicializar el conjunto múltiple usando el método insert() como mymultiset.insert(1). Todos los elementos que se necesitan para estar en multiset deben insertarse uno por uno.
  8. Comienzo del cuerpo del bucle for para atravesar mymultiset.
  9. Utilizar la variable de bucle "it" para iterar los valores de mymultiset e imprimirlos en la consola.
  10. Fin del cuerpo del bucle for.
  11. Fin del cuerpo de la función main().
    #include<iostream>
    #include<set>
    using namespace std;  
    int main() 
    { 
         multiset<int>mymultiset;
         mymultiset.insert(1);
         mymultiset.insert(2);
         mymultiset.insert(3);
         mymultiset.insert(4);
         mymultiset.insert(5);
       for(auto it=mymultiset.begin(); it != mymultiset.end(); it++)
                 cout << ' ' << *it; 
                 
   return 0; 
 } 
    Output:
    1 2 3 4 5    

2. Inicializando como arreglos

Podemos inicializar un conjunto múltiple similar a la inicialización de matriz. Tenemos que dar los valores en el conjunto múltiple mientras lo declaramos.

Pasos:

  1. Al incluir el archivo de encabezado iostream en nuestro código, esto nos permitirá leer desde la consola y escribir en la consola.
  2. Incluyendo el archivo de encabezado del conjunto, define las clases de contenedor de conjuntos y conjuntos múltiples.
  3. Incluyendo el espacio de nombres std, para que podamos usar el miembro de std, sin llamarlo una y otra vez.
  4. Llama a la función main() dentro de la cual se escribirá la lógica del programa.
  5. Inicio del cuerpo de la función main().
  6. Declarar un multiconjunto llamado multisetname.
  7. Inicializar el conjunto múltiple escribiendo valores entre llaves{ } como mymultiset{1,2}.
  8. Comienzo del cuerpo del bucle for para recorrer el conjunto múltiple.
  9. Utilizar la variable de bucle "it" para iterar los valores del conjunto múltiple mymultiset e imprimirlos en la consola.
  10. Fin del cuerpo del bucle for.
  11. La función main() debería devolver un valor entero si el programa funciona bien.
  12. Fin del cuerpo de la función main().
     #include<iostream>
     #include<set>
     using namespace std;  
     int main() 
     { 
           multiset<int>mymultiset{ 1, 2, 3, 4, 5 };
           for(auto it=mymultiset.begin(); it != mymultiset.end(); it++) 
                      cout << ' ' << *it; 
      return 0; 
      }
   Output:
   1 2 3 4 5

3. Inicializando desde una matriz

Podemos pasar una matriz al conjunto múltiple. La matriz contiene los elementos que se deben completar en el conjunto múltiple y luego agrega el contenido de la matriz al conjunto múltiple usando el constructor de rango.

Pasos:

  1. Al incluir el archivo de encabezado iostream en nuestro código, esto nos permitirá leer desde la consola y escribir en la consola.
  2. Incluyendo el archivo de encabezado del conjunto, define las clases de contenedor de conjuntos y conjuntos múltiples.
  3. Incluyendo el espacio de nombres std, para que podamos usar el miembro de std, sin llamarlo una y otra vez.
  4. Llama a la función main() dentro de la cual se escribirá la lógica del programa.
  5. Inicio del cuerpo de la función main().
  6. Declarar una matriz llamada arr para almacenar 5 enteros (que debe completarse en varios conjuntos) y también inicializar los cinco enteros.
  7. Cree un número entero "n" para almacenar el tamaño de la matriz.
  8. Declarar un conjunto múltiple llamado mymultiset.
  9. Inicializar el conjunto múltiple pasando la matriz "arr" al conjunto múltiple como mymultiset(arr,arr+n).
  10. Comienzo del cuerpo del bucle for para recorrer el conjunto múltiple.
  11. Uso de la variable automática de bucle "it" para iterar los elementos del conjunto múltiple mymultiset e imprimirlos en la consola.
  12. Para acceder a los elementos, use "*it" ya que los iteradores son punteros y apuntan a los elementos en mymutiset.
  13. Fin del cuerpo del bucle for.
  14. Fin del cuerpo de la función main().
   #include <iostream>
   #include <set>
   using namespace std;
 
   int main()
   {
      int arr[5] = { 1, 2, 3, 4, 5 };
      int n = sizeof(arr) / sizeof(arr[0]);
      multiset<int> mymultiset(arr, arr + n);
        for(auto it=mymultiset.begin(); it != mymultiset.end(); it++) 
                       cout << ' ' << *it; 
       return 0;
    }
    Output:
    1 2 3 4 5

4. Inicializando desde un vector

Aquí, primero inicializamos un vector con valores que vamos a almacenar en el conjunto múltiple. Luego, tenemos que pasar los iteradores begin() y end() del vector inicializado al constructor de la clase multiset.

Pasos:

  1. Al incluir el archivo de encabezado iostream en nuestro código, esto nos permitirá leer desde la consola y escribir en la consola.
  2. Incluyendo el archivo de encabezado de vector, define las clases de contenedor de vector.
  3. Incluyendo el archivo de encabezado del conjunto, define las clases de contenedor de conjuntos y conjuntos múltiples.
  4. Incluyendo el espacio de nombres std, para que podamos usar el miembro de std, sin volver a llamarlo.
  5. Llama a la función main() dentro de la cual se escribirá la lógica del programa.
  6. Inicio del cuerpo de la función main().
  7. Declarar un vector llamado vect para almacenar 5 enteros (que se completará en multiset) y también inicializar los cinco enteros.
  8. Declarar un conjunto múltiple llamado mymultiset.
  9. Inicializar el conjunto múltiple pasando los iteradores begin() y end() del vector "vect" al conjunto múltiple como mymultiset(vect.begin(),vect.end()).
  10. Comienzo del cuerpo del bucle for para recorrer el conjunto múltiple.
  11. Utilizar la variable automática de bucle "it" para iterar los elementos de mymultiset e imprimirlos en la consola.
  12. Para acceder a los elementos, use "*it" ya que los iteradores son punteros y apuntan a los elementos en mymutiset.
  13. Fin del cuerpo del bucle for.
  14. Fin del cuerpo de la función main().

Ejemplo 1:

     #include <iostream>
     #include <vector>
     #include <set>
    using namespace std;
 
    int main()
   {
      vector<int> vect{ 1, 2, 3, 4, 5 };
      multiset<int> mymultiset(vect.begin(), vect.end());
      for(auto it=mymultiset.begin(); it != mymultiset.end(); it++) 
                  cout << ' ' << *it; 
    return 0;
    }
    Output:
    1 2 3 4 5

Ejemplo 2:

    #include <iostream>
    #include <vector>
    #include <set>
   using namespace std;
 
     int main()
  {
      vector<int>vec;
      vec.push_back(1);
      vec.push_back(8);
      vec.push_back(10);
      vec.push_back(3);
      vec.push_back(6);
      multiset<int> mymultiset(vec.begin(), vec.end());
       for(auto it=mymultiset.begin(); it != mymultiset.end(); it++) 
                 cout << ' ' << *it; 
       return 0;
  }
   Output:
   1 3 6 8 10

5. Inicializando desde otro conjunto múltiple

Primer método:usar funciones básicas como mutiset.begin() y multiset.end()
Aquí, podemos copiar valores del conjunto múltiple existente y pasarlo al nuevo constructor de clase de conjunto múltiple mediante el uso de los iteradores begin() y end() del conjunto múltiple existente.

Pasos:

  1. Al incluir el archivo de encabezado iostream en nuestro código, esto nos permitirá leer desde la consola y escribir en la consola.
  2. Incluyendo el archivo de encabezado del conjunto, define las clases de contenedor de conjuntos y conjuntos múltiples.
  3. Incluyendo el espacio de nombres std, para que podamos usar el miembro de std, sin volver a llamarlo.
  4. Llama a la función main() dentro de la cual se escribirá la lógica del programa.
  5. Inicio del cuerpo de la función main().
  6. Declarar un nombre de conjunto múltiple como mymultiset1 e insertarle valores usando el método insert().
  7. Declare otro conjunto múltiple llamado mymultiset2.
  8. Inicializar mymutiset2 usando iteradores begin() y end() de mymultiset1 como mymultiset2(mymultiset1.begin(), mymultiset1.end()).
  9. Comienzo del cuerpo del bucle for para atravesar mymultiset2.
  10. Utilizar la variable de bucle "it" para iterar los valores de mymultiset2 e imprimirlos en la consola.
  11. Fin del cuerpo del bucle for.
  12. Fin del cuerpo de la función main().
       #include <iostream>
       #include <set>
       using namespace std;
 
        int main()
        {
          multiset<int> mymultiset1{ 1, 2, 3, 4, 5 };
          multiset<int> mymultiset2(mymultiset1.begin(), mymultiset1.end());
          for(auto it=mymultiset2.begin(); it != mymultiset2.end(); it++) 
                         cout << ' ' << *it; 
         return 0;
         }
      Output:
      1 2 3 4 5

Segundo método:usar el operador de asignación
Aquí, simplemente estamos inicializando un conjunto múltiple insertando valores uno por uno y luego copiando sus valores a otra clase de conjunto múltiple usando el operador de asignación (=).

Pasos:

  1. Al incluir el archivo de encabezado iostream en nuestro código, esto nos permitirá leer desde la consola y escribir en la consola.
  2. Incluyendo el archivo de encabezado del conjunto, define las clases de contenedor de conjuntos y conjuntos múltiples.
  3. Incluyendo el espacio de nombres std, para que podamos usar el miembro de std, sin volver a llamarlo.
  4. Llama a la función main(), dentro de la cual se escribirá la lógica del programa.
  5. Inicio del cuerpo de la función main().
  6. Declarar un conjunto múltiple llamado mymultiset1 e inicializar los valores uno por uno mediante el método insert().
  7. Declarando otro conjunto múltiple llamado mymultiset2.
  8. Usando un operador de asignación (=), copiamos los valores de mymultiset1 a mymultiset2.
  9. Comienzo del cuerpo del bucle for para atravesar mymultiset2.
  10. Utilizar la variable de bucle "it" para iterar los valores de mymultiset2 e imprimirlos en la consola.
  11. Fin del cuerpo de la función main().
     #include <iostream>
     #include <set>
     using namespace std;
 
     int main()
    {
        multiset<int> mymultiset1;
        mymultiset.insert(1);
        mymultiset.insert(2);
        mymultiset.insert(3);
        mymultiset.insert(4);
        mymultiset.insert(5);
        multiset<int> mymultiset2;
        mymultiset2 = mymultiset1;
        for(auto it=mymultiset2.begin(); it != mymultiset2.end(); it++) 
                      cout << ' ' << *it; 
      return 0;
     }
   Output:
   1 2 3 4 5

6. Inicializando en orden descendente

Simplemente podemos inicializar los valores en el conjunto múltiple en orden descendente.

Pasos:

  1. Al incluir el archivo de encabezado iostream en nuestro código, esto nos permitirá leer desde la consola y escribir en la consola.
  2. Incluyendo el archivo de encabezado del conjunto, define las clases de contenedor de conjuntos y conjuntos múltiples.
  3. Incluyendo el espacio de nombres std, para que podamos usar el miembro de std, sin volver a llamarlo.
  4. Llama a la función main() dentro de la cual se escribirá la lógica del programa.
  5. Inicio del cuerpo de la función main().
  6. Declarando un conjunto múltiple llamado mymultiset y agregando "mayor int" en el tipo de datos.
  7. Inicializar el multiset usando el método insert() como mymultiset.insert(1).
  8. Comienzo del cuerpo del bucle for para atravesar mymultiset.
  9. Utilizar la variable de bucle "it" para iterar los valores de mymultiset e imprimirlos en la consola.
  10. Fin del cuerpo de la función main().
    #include<iostream>
    #include<set>
    using namespace std;  
    
    int main() 
      { 
          multiset< int, greater<int> > mymultiset;
          mymultiset.insert(8);
          mymultiset.insert(1);
          mymultiset.insert(3);
          mymultiset.insert(2);
          mymultiset.insert(5);
         
           for(auto it=mymultiset.begin(); it != mymultiset.end(); it++)
                        cout << ' ' << *it; 
                 
           return 0; 
        } 
    Output:
     8 5 3 2 1

Con este artículo en OpenGenus, debe tener una idea completa de las diferentes formas de inicializar un Multiset en C++.


No