¿Qué es una tupla?
Una tupla en C++ es un objeto que tiene la capacidad de agrupar varios elementos. Los elementos pueden ser del mismo tipo así como diferentes tipos de datos. Se puede acceder al orden en el que se inicializan los elementos de la tupla en el mismo orden.
Funciones asociadas a una tupla:
1. make_tuple(): Se utiliza para asignar tuplas con valores. Los valores pasados deben estar en orden con los valores declarados en la tupla.
2. get(): Se utiliza para acceder a los valores de la tupla y modificarlos, acepta el índice y el nombre de la tupla como argumentos para acceder a un elemento de la tupla en particular.
¿Qué es el mapa?
Los mapas en C++ son contenedores asociativos que pueden almacenar elementos en forma de mapa. Cada elemento de un mapa tiene una clave y el valor asignado correspondiente. Dos valores asignados no pueden tener los mismos valores clave. Un mapa sigue la siguiente sintaxis,
Funciones asociadas al Mapa:
- begin() : Devuelve un iterador al primer elemento del mapa
- end() : Devuelve un iterador al elemento hipotético que sigue al último elemento en el mapa
- size() : Devuelve el número de elementos en el mapa
- max_size() : Devuelve el número máximo de elementos que puede contener el mapa
- vacío() : devuelve si el mapa está vacío
- clear() : Elimina todos los elementos del mapa
Mapa de Tuplas
Un mapa de tuplas es un mapa en el que la clave o los valores son una tupla.
Sintaxis:
map<tupla<tipodatos1, tipodatos2, tipodatos3>, tipodatos>;
Aquí,
dataType1, dataType2, dataType3 son los tipos de datos para la tupla que es una clave aquí
dataType es el tipo de datos para el valor
Este artículo se centra en cómo crear un mapa de tuplas en C++. Aunque también se puede hacer una tupla de más o menos elementos, pero por simplicidad, en este artículo, hemos usado tuplas que tienen solo tres elementos.
Ejemplo 1: A continuación se muestra el programa C++ para demostrar el funcionamiento de un mapa de tuplas.
C++
// CPP program to demonstrate // the working of a map of // tuples. #include <bits/stdc++.h> using namespace std; // Function to print map elements void print(map<tuple<int, int, int>, int> &mapOfTuple) { cout << " Key(Tuple) " << "Value(Sum)\n\n"; for (auto pr : mapOfTuple) // pr points to current pair of mapOfTuple cout << "[" << get<0>(pr.first) << ", " << get<1>(pr.first) << ", " << get<2>(pr.first) << "] " << pr.second << "\n"; } // Driver code int main() { // Sending the hash function // as a third argument map<tuple<int, int, int>, int> mapOfTuple; // Creating some tuples to be used // as keys tuple<int, int, int> tuple1(100, 200, 300); tuple<int, int, int> tuple2(400, 500, 600); tuple<int, int, int> tuple3(700, 800, 900); // Mapping sum of tuple elements as values mapOfTuple[tuple1] = get<0>(tuple1) + get<1>(tuple1) + get<2>(tuple1); mapOfTuple[tuple2] = get<0>(tuple2) + get<1>(tuple2) + get<2>(tuple2); mapOfTuple[tuple3] = get<0>(tuple3) + get<1>(tuple3) + get<2>(tuple3); // Calling print function print(mapOfTuple); return 0; }
Producción:
Clave (Tupla) Valor (Suma)
[100, 200, 300] 600
[400, 500, 600] 1500
[700, 800, 900] 2400
Ejemplo 2: A continuación se muestra el programa C++ para demostrar el funcionamiento de un mapa de tuplas.
C++
// C++ program to demonstrate // the working of a map of // tuples. #include <bits/stdc++.h> using namespace std; // Function to print map elements void print(map<tuple<string, string, string>, string> &mapOfTuple) { cout << " Key(Tuple) " << "Value(Concatenation)\n\n"; // Iterating over map using range-based loop for (auto pr : mapOfTuple) // pr points to current pair of mapOfTuple cout << "[" << get<0>(pr.first) << ", " << get<1>(pr.first) << ", " << get<2>(pr.first) << "] " << pr.second << "\n"; } // Driver code int main() { // Declaring a map whose key is a // tuple of strings value is of // also string type map<tuple<string, string, string>, string> mapOfTuple; // Creating some tuples of string types // to be used as keys tuple<string, string, string> tuple1("Geeks", "for", "Geeks"); tuple<string, string, string> tuple2("R", "HTML", "Javascript"); tuple<string, string, string> tuple3("Python", "Swift", "Java"); // Mapping concatenation of tuple elements as values mapOfTuple[tuple1] = get<0>(tuple1) + " " + get<1>(tuple1) + " " + get<2>(tuple1); mapOfTuple[tuple2] = get<0>(tuple2) + " " + get<1>(tuple2) + " " + get<2>(tuple2); mapOfTuple[tuple3] = get<0>(tuple3) + " " + get<1>(tuple3) + " " + get<2>(tuple3); // Calling print function print(mapOfTuple); return 0; }
Producción:
Clave (Tupla) Valor (Concatenación)
[Geeks, para Geeks] Geeks para Geeks
[Python, Swift, Java] Python Swift Java
[R, HTML, Javascript] R HTML Javascript