Conjunto de Tuplas en C++ con Ejemplos

¿Qué es una tupla?
Una tupla es un objeto que puede contener varios elementos. Los elementos pueden ser de diferentes tipos de datos. Los elementos de las tuplas se inicializan como argumentos en el orden en que se accederá a ellos.

Operaciones sobre tupla:
1. get(): get() se usa para acceder a los valores de tupla y modificarlos, acepta el índice y el nombre de tupla como argumentos para acceder a un elemento de tupla en particular.
2. make_tuple(): make_tuple() se usa para asignar tupla con valores. Los valores pasados ​​deben estar en orden con los valores declarados en la tupla.

¿Qué es un conjunto?
envase

Algunas funciones básicas asociadas con Set:
1. begin() : Devuelve un iterador al primer elemento del conjunto.
2. end() : Devuelve un iterador al elemento teórico que sigue al último elemento del conjunto.
3. size() : Devuelve el número de elementos del conjunto.
4. max_size() : Devuelve el número máximo de elementos que puede contener el conjunto.
5. vacío() : devuelve si el conjunto está vacío.

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to demonstrate the 
// implementation of set of
// tuples
#include <bits/stdc++.h>
using namespace std;
  
// Function to print set contents
void print(set<tuple<int, int, 
                     int> >& setOfTuples)
{
  for (auto x : setOfTuples) 
  {
    tuple<int, int, int> tp = x;
    cout << get<0>(tp) << 
            ' ' << get<1>(tp) << 
            ' ' << get<2>(tp) << '\n';
  }
}
  
// Driver code
int main()
{
  // Declaring a set of tuples
  set<tuple<int, int, 
            int> > setOfTuples;
  
  // Initializing tuples
  tuple<int, int, 
        int> tuple1;
  tuple1 = make_tuple(1, 2, 3);
  
  tuple<int, int, 
        int> tuple2;
  tuple2 = make_tuple(2, 3, 5);
  
  tuple<int, int, 
        int> tuple3;
  tuple3 = make_tuple(2, 3, 4);
  
  tuple<int, int, 
        int> tuple4;
  tuple4 = make_tuple(2, 1, 4);
  
  tuple<int, int, 
        int> tuple5;
  tuple5 = make_tuple(5, 8, 14);
  
  // Inserting into set
  setOfTuples.insert(tuple1);
  setOfTuples.insert(tuple2);
  setOfTuples.insert(tuple3);
  setOfTuples.insert(tuple4);
  setOfTuples.insert(tuple5);
  
  // Calling print function
  print(setOfTuples);
  
  return 0;
}
Producción

1 2 3
2 1 4
2 3 4
2 3 5
5 8 14

De forma predeterminada, las tuplas se organizan en orden no descendente en el conjunto y siguen la lógica siguiente:
En el conjunto, si el primer valor de dos tuplas es igual, se compara el segundo valor de las tuplas y, si también es igual, el tercero se compara el valor. Pero siempre es posible pasar un comparador a un conjunto.

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to demonstrate the 
// implementation of set of tuples 
// by using custom comparator
#include <bits/stdc++.h>
using namespace std;
  
// Comparator for arranging elements 
// in non-ascending order We can 
// always modify the comparator as 
// per the requirement
struct cmp 
{
  bool operator()(const tuple<int, int, 
                              int>& x,
                  const tuple<int, int, 
                              int>& y)
  {
  
    if (get<0>(x) == get<0>(y))
    {
      if (get<1>(x) == get<1>(y))
        return get<2>(x) > get<2>(y);
      return get<1>(x) > get<1>(y);
    }
  
    return get<0>(x) > get<0>(y);
  }
};
  
// Function to print set elements
void print(set<tuple<int, int, 
                     int>, cmp>& setOfTuples)
{
  for (auto x : setOfTuples) 
  {
    tuple<int, int, int> tp = x;
    cout << get<0>(tp) << 
            ' ' << get<1>(tp) << 
            ' ' << get<2>(tp) << '\n';
  }
}
  
// Driver code
int main()
{
  // Declaring a set of tuples
  set<tuple<int, int, 
            int>, cmp> setOfTuples;
  
  // Initializing tuples
  tuple<int, int, 
        int> tuple1;
  tuple1 = make_tuple(1, 2, 3);
  
  tuple<int, int, 
        int> tuple2;
  tuple2 = make_tuple(2, 3, 5);
  
  tuple<int, int, 
        int> tuple3;
  tuple3 = make_tuple(2, 3, 4);
  
  tuple<int, int, 
        int> tuple4;
  tuple4 = make_tuple(2, 1, 4);
  
  tuple<int, int, 
        int> tuple5;
  tuple5 = make_tuple(5, 8, 14);
  
  // Inserting into set
  setOfTuples.insert(tuple1);
  setOfTuples.insert(tuple2);
  setOfTuples.insert(tuple3);
  setOfTuples.insert(tuple4);
  setOfTuples.insert(tuple5);
  
  // Calling print function
  print(setOfTuples);
  
  return 0;
}
Producción

5 8 14
2 3 5
2 3 4
2 1 4
1 2 3

Publicación traducida automáticamente

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